Hello, everyone. Welcome to the Moodle Academy webinar on translating user-generated content. My name is Rajanith Kotharam, and I'm a developer educator at Moodle Academy. And I'm based in Fiji. I'm joined by my colleague Anna Kerasa, who is also from the Moodle Academy team, and Anna is based in Greece. Anna will help me facilitate today's session. So I will be presenting today in the session today, together with Andrew Hancox. So again, my name is Rajanith Kotharam. I'm a developer educator at Moodle Academy. And my role at Moodle Academy involves creating developer courses and looking after the Moodle Academy Moodle site, which includes maintaining the site, creating plugins, fixing bugs, and all those things. And we have Andrew Hancox, who is the director of open source learning. Andrew is based in the UK. And we're excited to have Andrew here because he has developed two plugins that we will be discussing in today's session. And these two plugins are quite important to the work that we do at Moodle Academy. So we're very happy to have Andrew here as well. In this session today, we will cover the following things. We will discuss why translating content is important. We will talk about how you can generate, you can translate user-generated content. And we'll give an overview of the content translation plugin set. So this is a plugin that has been developed, especially with the purpose of translating user-generated content. We'll discuss some of the design and the challenges of developing this plugin and making it work to allow content translation to happen. And we'll also discuss some of the future plans that we have in terms of weather enhancing this plugin to make content translation much more easier. So why translate content? That's an important question for us at Moodle Academy based on the work that we do. And for many people, if you are saving people from different countries who speak different languages. And earlier in the session, I mentioned that I am based in Fiji. My colleague Anna is from Greece. Andrew is based in the UK. And then if you look at the chat, then we see many of you are joining from different countries. We all speak different languages. And for many of us, English would be a second language or third language. And you would agree that when you, it's easier to understand content which is in your own language. And that is the reason why it's important to have content translated. And the things for the work that we do at Moodle Academy, we try to ensure or at least strive towards having our courses and the webinars that we offer translated into different languages so that we can enable access to as many people as possible to be inclusive. And like I said, when you have content translated in your own content, then it's much more easier for you to understand. So basically the whole purpose of enabling content translation for us is to empower people to learn. I will now hand over to Andrew. Andrew is going to cover the rest of the slides and then I will join in later. OK, so yeah, good to meet you all. So I'm Andrew Hancox. I'm based on the south coast of England, director of open source learning, which is a small micro agency. I'm not affiliated with Moodle HQ outside of this project. And we specialize in outward facing learning management systems. So do a lot of work where organizations are training people that sit outside of their organization. So this work sort of came out of a project I did working with the Peruvian government in the part of a knowledge sharing exercise as part of the rebuild in the wake of the El Nino disaster. And we built some tools to allow translation to happen that then got noticed by Moodle HQ and got turned into this new suite of tools. So I'm going to run through sort of translation in Moodle and what we ended up building. So OK, elements of language. There's a few places where text comes from within Moodle. Core PHP and the server operating system. So when you localize dates, when you localizing dates is the obvious example, it uses the language pack that's installed at operating system level. You've then got language packs within Moodle. So obviously your users will select a language out of the languages that are installed and those are maintained via Amos. Hang on, sorry, I'm cutting ahead. So we'll get into the detail of, no way, OK. So yeah, language packs within Moodle. These are curated by Amos. They're provided by Moodle HQ. They're installed on your server within the Moodle instance itself. You've then got curated content. So you've got the stuff that's written by your teachers when they're creating page activities, they're writing quizzes, all that kind of thing. You've got the curated content from the educators using your platform. And then the fourth category of content you've got is user-generated content. So this is, it might be forum-closed. It might be entries in a database activity. So these are actually four very different sources of text where you've got less and less control and less and less sort of predictability about what there's going to be. So you can have a very structured approach to the core PHP and all the stuff that's handled by the underlying operating system. Moodle HQ have done heavy lifting with the language packs for you curated content. You can tell your teachers approximately what to do and they'll normally do it. User-generated content, if you want to start having that available in multiple languages, it's going to start getting quite complicated. So looking at how Moodle does and manages languages internally, obviously, the cyber administrator will make sure that the server has to write languages installed at an OS level. They'll install the right language packs into Moodle. The author of the content can actually write the courses of whatever language they want. And they can use the various filters to control what elements get visible. So you might use the multi-lang filter to embed the different translations in one block of text, or you might use the language accessibility availability restriction so that users see the page based on their chosen language. And then the user themselves viewing the site controls the language that they see. Moodle will respect the user agent, the information that comes across in the HTTP request tellers that tells the Moodle application what language their browser is expecting things to come in. And Moodle is quite clever in how it can use that. The user can set a language preference. The site has a default. And the Moodle app, when I wrote this, has one global setting. It's less flexible. So there's different ways Moodle will decide how to serve what language people are wanting to see. So OK, so translations within Core PHP and the server operating system. So this is where you install locales using like Audubon 2 app to get. You can manage the locales that are available. You can make sure that you've got the right database and coding set up so that the unicode characters used in non-Latin alphabets will get displayed correctly, diacritics and things like that. Again, that's the first level you need to worry about. Then you've got the language packs. So obviously any good Moodle developer knows you don't write any text within the body of your code. You create these libraries of strings. And then everything gets passed through the get underscore string calls. Or when it's embedded in a moustache template, you use the relevant moustache tags. Everyone should do this. 99% of people do. I think it's pretty hard to get a plug-in into the Moodle plugins database if you're not doing this bit correctly. But if you're installing plug-ins from GitHub, sometimes it can get slightly sketchy. If you're working with code that's by less experienced developers who haven't been working with Moodle, this is a step that sometimes gets skipped, which can cause a lot of problems when you're relying on that for functionality of the language packs. So the language packs are managed by Amos. They're installed by the admins into the Moodle instance. You can customize them through UI. And there's brilliant availability. So all the major Western languages are covered. Outside of that, Chinese, 94%. Next biggest outside of Western languages is Hindi. That is not all. Yeah, OK. These stats are quite old, but most languages, most major languages are covered by a language pack. When I looked, there were 2.4 million strings translated across 100 languages. So outside of the things that you're the person administering the platform can manage, you've got the curated content. So this is the course content created by instructional designers. So there are different approaches you might want to take depending on how you want to report on the user activity, how you want to enroll users, factors like that. So again, you're slightly at the mercy of the plugins. So all plugins should run text that gets output through format text, format string, external format string. And this runs the filters. So I'm just going to show you how to do that. The filters. So I'm assuming everyone is aware of this already, but Moodle has the concept of filters that user entered content will get run through. And it does things like check there's no hostile HTML in there, automatically links course names, embeds video players where it sees Bimeo links. But there's also several translation tools that hang off this. So again, all plugins should do this properly. Most plugins do, particularly for Moodle plugins database, but again, there are issues around this. So that's how curated content, but those are the hooks, those are the tools that you can use to deliver multi-lingual content. So the actual approach is when you've got curated content, the simplest option is always going to be you just have a course per language. It's so much easier. You don't end up having... It just removes so many levels of complication. The issue is you need to manage any content changes across all of those courses. You need to somehow enroll people on the course that's relevant for their language. You instantly can't report on course completions in a single place because you've got the same course present in multiple spaces. So there are some pretty big limitations with this approach, but it is the simplest option. The next simplest option is availability conditions. So where you have an element of a course that needs to be translated, you just have multiple instances of it in different languages. So you'll have one course and you'll have, for example, three different labels with the same content, English, Spanish, and German, and you'll use Renat de Blers' excellent restriction by language plugin to make sure that the user sees the one relevant for their language. Again, it gets in the way of reporting because you can't report on activity completion in the same way and it can introduce complications there, but again, it's pretty easy to manage and work with and it's more sustainable because at least you can get all the content in one screen. It's all in one place. It's all in one course. So the next step is multi-language filters. So this was the only way of doing it for quite a long time if you had to have a single activity supporting multiple languages. So you would embed these span tags within your content and a core filter would see these and only show the ones relevant to the user's current language. So then multi-lang 2 came out. It was slightly meter syntax, easy to work with, a bit more concise, not using standard span tags, using curly braces, but the same idea. So the text that you enter, you wrap it in these tags and the filter system will make sure that the end user gets the right text displayed to them. So it can be fiddly to edit. The M-lang tags from multi-lang 2 are easier to work with because it doesn't confuse the Atto editor as much as the span tags. But it's a hassle. You end up with, particularly with labels, a lot of the labels are restricted to 255 characters. So if you've got a 25-character label that you're going to display in six different languages, by the time you've got the tags around it as well, you probably won't fit it in the database field. So it doesn't work. It's relying on all the tags being filtered correctly through the filter stack, using those functions that we talked about earlier. There's a couple of spots in Moodle Core where that doesn't happen in quite the way you'd expect. There's quite a few third-party plugins that don't do it as consistently as one would hope. So that worked, but those were the options. So then Fahang Kamali released a content translation system which picked up and deployed it with the Peruvian government with some quite a few fixes to make it a bit more reliable, cover more use cases. And Moodle HQ, as part of the Moodle Academy Initiative, needed to deliver much more comprehensive translation of their sites. So again, it's a filter, but you don't need to put any tags in. It will take care of all the translation for you automatically. So you don't have the issues with having to put weird tags within all the content that you're entering. It's a lot easier for non-technical stakeholders to work with. It's a much more sustainable approach, but it does have its limitations that we will get onto.  So we create a sort of a 16-character signature for that text, which will be different for every block of text ever. And we can use that to see if we have an existing translation of it. If we don't have a translation of it, then we can either prompt the user to supply a translation or we can fire off a request to Google Translate to get a translation for it. Imagine you will show you the UI in the next bit, but it's all in line. It's a really neat user experience. It's a lot easier for the people producing the content to work with. There are some management tools, so you can see what proportion of your course is translated. If there's any languages where coverage is spotty, it's a much easier approach to work with. So I'm just going to skip ahead slightly. We've covered this already. So going on to some of the limitations, you can master through Google Translate. Google Translate is getting better all the time, but there are a couple of spaces where it has challenges. So one of the biggest problems that we've got in building this plugin is when the filter stack runs, when text gets run through the filter stack, the filter itself has no idea what the source language is. So if you end up with Spanish people and Portuguese people, South American people from Hispanic nations, you can end up with a bunch of different languages that superficially look the same and to Google Translate will look the same and potentially to your translators will look the same, but you don't actually know which one it was. Working in Peru, that was particularly problematic because we had a lot of dialects that Google Translate couldn't reliably tell apart. We also have Spanish people working on the project as well just to make it even more complex. I think there's other languages that overlap enough to confuse Google Translate like Austrian and German, things like that. And the issue around not knowing the context that the translation is being performed in comes up a lot. Individual names, that's a big problem with Google Translate. A lot of names mean something. So John Tyler, when Google Translate sees John Tyler, it will translate Tyler as in the guy that sticks ceramics to the wall of your house, which is uncomfortable. It's not great. There are names that have slightly more unfortunate translations into different languages, and that's been quite an uncomfortable and embarrassing problem a few times. So there are these challenges. Getting the filters to run in the right order is absolutely critical. So if the content translation filter runs after or before some filters, it can break the filter codes. It can translate things you don't want translated like. You can also get a lot of false positives in terms of identifying any content. So your Google Translate bill can go absolutely through the ceiling. So you have to be very, very careful. It's not a perfect solution, but it's the best we've got. I mean, it was great fun working with Google ASQ to build it. What's next? So Rajneel will go through this, improving the UI, the UX. But a lot of it comes down to what I would love to see from Google Core. So a couple of places that don't implement filters, making the editors more aware of the content that they are displaying, that would be a major step forward in the API. More flexible completion logic would make it easier to use availability restrictions and things like that to avoid this translation. It's a slightly technical thing, but classic British arrogance. English is the universal fallback. In the absence of anything else, Moodle will end up displaying English. And there are a couple of places where that makes it quite tricky to manage the translations that get displayed. The way language packs get implemented in Moodle Workplace makes things a bit tricky. You might not have come across this, but there's the concept of child language packs. And the inheritance hierarchy within Moodle Workplace isn't quite what you'd expect. Anyway, I'm going to stop presenting now. I hope that's given you some background as to the challenges of translating and where this product, where this project came from. So Andrew has covered a lot of the things that I have, but let me just quickly show you. Once you have the filter enabled on your site and you are in that inline translation mode, so this is something that you will see. So for each piece of content that can be translated by this plugin, the content translation plugin, you will see these icons. So these green icons with the tick indicates that this content has been translated. These ones indicate that it is something that needs to be translated. And an orange icon indicates that this content has been translated, but the content there has been updated. So it's possible that the translation also needs to be updated. So these are the indications that a user gets when they turn on inline translation. And to edit your translation, you will simply click on any of these icons, inline translation icons, that will then open up a page similar to this, which will show you the original text that you have in whatever language that was there, the language in which you want to translate to, and you can add your translation. And again, you have the full Etoeditor, which allows you full formatting, embedding files and everything. And then you can save this translation into your system. And then once the next time I use the Cs, accesses that particular page, then it will touch up the correct translation. An important aspect that Andrew mentioned that, we've got two sets of plugins. So once we have the content translation filter, which is responsible for fetching the translations and displaying those inline translation icons. And then within the Etoeditor, we've got another plugin, which is responsible for adding this translation span text that you see at the bottom. So for a normal user, in normal editing mode, they will just see what you see, what you get editor in Eto. But if you switch to the code view, then you will see that the Etoed translation plugin has added this additional translation span text. And this span text that I use to match the content with its corresponding translation. Andrew has explained how things work and what were the challenges. Let's just see some of the things that happened in the backend. Not really the actual backend, but things that our user does not see. So as mentioned, any content that gets rendered on the screen would usually pass through format text or format string. And when that function is called, then model intent will call all the filters that apply to the particular page, to the particular content. And because the content transition plugin is also a filter, so the filter method for that plugin, for the content transition plugin in this case, will also be called. And basically a filter plugin, what it does is quite simple. All it does is gets an input text, does some processing, filtering, whatever, and then returns the process text back to the output API, which is then responsible for displaying it in the appropriate format. A very simplified algorithm of the things that happen to fetch the translation, display the translation to the user is when the filter function gets the text to be filtered, then the function looks for, is there a translation span tag in that particular content? If so, it will extract that translation span tag and then remove the additional span tag that was added by the Ato filter, so that we get the raw text. And then it will generate a hash, MD5 hash of that content. So we have a hash of the text to be translated. And then of course, because we are dealing with translation, so we need to know which language to show the translation in. So we get the current language. And then the filter will look, is there a matching translation for that particular hash, for that hash that we get in the first step, for that particular language in our cached version? If so, then of course, you just return it, right? There's nothing else to do unless you are in inline translation mode. If there is nothing found in the cache, then the plugin, then the function goes and checks, you know, is there a translation that I can use from the database? And then it tries to get the best translation from the database. And then I'll discuss, you know, why we call it the best translation. So because there's a number of checks that it does to find a translation or a matching translation that it can use. And if we are in inline translation mode, if the user has permission to translate content on that particular page, then it will also inject those inline translation icon. That makes it easier to translate content. And for adding translations, saving translations into your system, again, a very simplified algorithm, everything starts from that filter plugin. So the filter gets that text, tries to find a matching span tag. If there's a span tag, then it extracts the hash. And that hash we call the MD5 key. And then generates a hash of the content to be translated. And that is referred to as the last generated hash. And I'll explain this again later in the presentation. And then for the particular text, what is the substitute text to use? So basically what is the translation that we want to display? And then it's a simple form thread and then save the data into the database. And then the next time when a user accesses it, the filter will fetch that content, cache it if it is not cached, and then display it to the user. So that's basically the algorithm that we use. Of course, there are other fields such as the ID, the user who translated the content, and the time-modified time-traded. But these are the specific fields that relate to the translation data for that particular content. We have the MD5 key, which is the identifier, the translation hash identifier used to identify that particular translation and match to its corresponding content. We have the last generated hash. And this is the hash of the text to be translated. And then, of course, we've got the language that is going to be used for that particular translation. The context ID just to match where that content or the text belongs to. This context ID is the modal context ID that every piece of content gets. And then we have the raw text, the text to be translated and the substitute, which is the translated data. So these are the details recorded for every piece of translation data. Now, let's see how all these things work with some examples. So let's say in your Ato editor, you have this particular text. This is my text in paragraph, in terms of paragraph text. So in Ato, this is what you will see. And then if you switch to the code view in HTML view, then you will see the Ato plugin will also insert this additional translation hash span tags. Now, when this piece of content gets passed to the filter, what the filter does is that, OK, is there a translation hash span tag? In this case, yes. So it will extract out the hash value and store it in the MD5 key. So that's the value that we have here. It will strip out the span text altogether because we just need the raw text now. So the raw text is also stored here. So this is the, again, the text without the translation span tags. And then the function will then create a hash of this particular content. In this case, this is my text enclosed in paragraph text. So it will create a hash and that is the generated hash of that content. So this MD5 key that you have here is a random hash value. It could be anything, but this generated hash is the hash of this particular content. So once the filter has all these things, now it checks the translation data. Is there anything in the cache or in the database? So the translation data that is recorded would be something like this. The main identifier, the MD5 key would be used again that is extracted from this translation hash span tags. The last generated hash is the hash of this raw text that is being translated. And if you notice that is the generated hash of the content. So it's the same value. It's just recorded under a different field name. And then the raw text is the text without the translation span tags and the substitute text, which is the translated data or the translation that needs to be shown that needs to be shown instead of this raw text. So this is what the translation data writes. So when the filter, when a user comes right who needs the content to be translated, what the plugin, what the filter will do, for this particular text, this is the MD5 key that I have. Is there a matching record with this ID? And then in this case, yes, there is one. So it will then display this substitute text instead of this original text. So that's basically a very simple thing that the filter does. Just finds a matching record and then instead of the original text, display the substitute text. And in our case, that substitute text would be the translation data, the translation of that particular content. Now, then that content can also be updated. So later on, right? So the content has been added, has been translated, and then now let's say a teaching staff comes in, then it's on editing, and then updates that text. So the text that was, you know, this is my text is updated through this text has been updated. Again, using Ato editor. So because this pen tag already existed, was already added to the particular content, the Ato plugin will not do anything. And the only thing that the teaching staff will do is just update the content. And this hash will remain the same. So content gets updated. Now the raw text has been updated. This text has been updated. That is the raw text. The MD5 key that was extracted was the same as the previous value and the generated hash. The generated hash is the hash of the content. In this case, the hash of the updated raw text. So the generated hash would be a new value. So we have a new value for the raw text. The same value as the MD5 key, which is, which acts as the identifier. And then we have the generated hash, which is again an updated value because the raw text has been updated. So now when the plugin looks for a translation data, what it does is this is what it gets. So this is the updated record. This is the updated information for the content, raw text, MD5 key and the generated hash. And now it checks. Is there a matching record for this MD5 key in the translation data? Yes. So there is the matching record with this. So okay, we have found a translation that we can display. So for this text, this is the translation substitute text that will be displayed. But we also have this generated hash and the last generated hash. So a nice thing about this plugin is that with this generated hash and then the last generated hash, the reason why this is stored is that, you know, then this allows it, okay, this MD5 key is matching. So this is the translation that I'm going to use, but the generated hash for the current content that I am looking at and its translation data, the last generated hash are different. So this gives an indication to the plugin that the content here has been, the raw text here is different. So this indicates, gives an indication that, okay, the text, the raw text might have been updated. So the content has been updated. So this is when you see in the inline translation mode, when the translation is displayed, of course this transition will be displayed, but it will also show with an orange icon that, you know, this content, this translation is outdated, is stale. So, you know, that transition might need to be updated. So that's the reason that's the importance of, you know, generating the hash of the raw text and then storing that here in the last generated hash. So that's basically a check to easily identify, you know, is the translation that we are displaying on the page up to date or not. So, yes. And one other thing I said that, you know, if I just go back to the previous slide here is that, so in this case you have text and you have content that has this pain text added. Sometimes it's also possible that you get some text which does not have this pain tag, this translation spend tag. So you will have this raw text as this text has been updated. The MD5 key, because there is no translation spend tags, then this key value will be null, right?  So the function will again generate the hash of the content. So it will get this hash. And let me just go back to this one, right? So it will get this generated hash. And then because there's no MD5 key to use, it will then use the last generated, this generated hash, right? In this case, when it looks at the database, okay, there's nothing matching the MD5 key because I don't have a MD5 key value. Now I'm just going to use the hash of the content. And the hash of the content value is the same as the large generated hash of the content. So because this does not match, but there is a matching record under this hash. So in this case, again, you know, because the identifier is not there, the system is still able to pick. Okay, there is nothing matching the exact MD5 key, but there is a similar, there is a translation that I can use because the hash of the content matches. And then the plugin is able to display this particular translation data. And that, again, is one of the advantages of this particular plugin is that, you know, it allows you to easily pick out the best translation. So that's one example of, you know, the use of the best translation. Another thing Andrew also mentioned is that the concept of parent and child languages. So the design of the plugin allows, if our content is translated in a parent language, then its translation can also be used in the child languages. For example, if something is translated in French, then the Canadian French, any user who switches to Canadian French, French will also be able to see those translations. And then if, for some reason, if you know somebody comes and updates the translation in the French, Canadian French language for the particular content, then of course that one would be used. But if there's no translation that exists, then the system will look, is there a matching translation in the parent language that I can use. And Andrew also mentioned about automatic translations. So Google Translate is supported at the moment. And there are some issues that Andrew discussed that, you know, that you need to keep note of. What's next? Future plans? Again, some of the things Andrew mentioned. For us, because this plugin is important, Eto is going to be out of support soon. And we have started work on creating a TinyMCE compatible version for the Eto plugin. So that is in the works, but there's some tricky things because with TinyMCE, they are, it's a bit more strict in the way that, you know, it accepts additional takes. So at the moment, it's not able to recognize the translation hash takes, so we need to, you know, work around that. Another thing, like we said, you know, enabling access is, you know, providing access to translation data from one side to another. So we are looking at, you know, having backup and restore of this translation data, better management of translation history, some UI improvements that would be coming soon and support for more automated translations. At the moment, Google Translate is supported, but it's not highly accurate. And then they're cost involved in using that Google Translate. So we are looking at some other options that, you know, that allows more people to use it without cost some open translation APIs. And then one of the challenges that we have because this is not a typical filter plugin that, you know, that just takes content and displays it after some processing. There's some additional things that happens, right? This plugin stores data, this plugin and injects inline translation icons and then, you know, allows other things and stores data in different parts of Moodle, right? For course, for sections, for activity modules, for blocks, for questions, basically anywhere that AtoEditor can be shown, it stores the translation data for. And backing up all those data is difficult. One, the filter plugin does not hook into the backup and restore API. So that's basically impossible to use the translation, sorry, the backup and restore API for the filter plugin. So the current workaround or the option that we are exploring is using an admin tool. So we'll have another plugin, an admin tool, a translation manager basically to handle the backup and restore of translations. The advantage here is that the admin tools can hook into a lot of these, not all. So we are also looking at, you know, making some improvements to code to allow admin tool to at least allow to hook up into the backup and restore API of all these things, right? Everywhere that translation data is recorded. So that's some challenges and things that we are working on. And like I said, at least for Moodle Academy, for our Moodle Educator Certification, and also on Moodle.org, this plugin is used. So it's quite important for us to, you know, have these things working and, yeah, have these things working. So here are the links to the plugins, the content translations filter available on the Moodle plugins database. And we've got the link to the code repository as well. And the auto translations plugin, again, also available on the Moodle plugins directory. And we've got the link to the GitHub repository as well. Now, let's move on to questions. We've got a few minutes for questions. So if there are any questions, then we can answer those. I think you can come on the chat, and there's a few in there that I'll just run through really quickly. So Ralph, translate once, use everywhere makes sense. But in some situations, the same string or term has to be translated differently. Is this possible? No, not at the moment. The translations, whether they've come from Google Translate or have been manually created, keep track of the Moodle context that they've been created in, be it an activity, a course, or system. But at the moment, they're not filtered based on that. Olay messing, do you have plans to implement other translating platforms? So as Ralph replied, there is a commit for Deepul. I've not tested it. The filter plugins can't have sub-plugins. So the way you would do this would be to have a Google Translate sub-plugin, a Deepul sub-plugin. That's not an option. It would be good if there does end up being an admin tool as well. Then that would be a good place for those auto-translation sub-plugins to go. Cost for Google Translate. So Google Translate is priced at $20 per million characters, which you can choose through surprisingly quickly. So when we deployed this in Peru, we were having a lot of people communicate via the forums activity. And that needed to be translated. We were having to automatically translate these conversations. So obviously there was a lot of content being created to run through. The bigger issue and the one you really need to watch out for is when you're translating very, very dynamic content. So as an example, I worked with the UN to deploy this for a project to educate agricultural, but people working in the agricultural sector across Africa. And when Moodle renders a quiz question, the multi-choice question puts a different ID in each question option for each attempt, which meant that every time anyone viewed the quiz, it was having to re-translate everything, because the MD5 passions were different, because one ID on a query string on an image that was embedded within one of the options changed every time. So suddenly the Google Translate bill went through the roof. So there's things like that that you really need to watch out for, but correctly and carefully configured, the cost is minimal. It also caches all the translations locally, so you only have to pay to translate a piece of text once. Ato Editor versus TinyMCE, again, a devious design decision up front on my part to use span tags, which are valid HTML and looked later, now means that TinyMCE breaks, which is frustrating. We'll need to figure out something. Ralph Hilgenstock, you can... So, okay. So you're giving the example of the quiz results page, which can vary a lot. And for someone managing translations, that's quite challenging to do. So this is one of the consequences of the fact that the plugin is translating reactively. We're translating the content that gets omitted by Moodle rather than translating it at the point that the content is edited, which strengths and weaknesses either way. So, yeah, that is a hassle, but there are reports. So if retranslation that gets missed gets recorded, anytime Moodle would have liked to have found a translation to a different language for a piece of content, if it can't find anything, it does log that. So you can actually go through and see all the stuff that needed translating. There's a lot of noise in that report. It can be quite tricky to spot what you actually need to do, but yeah. Backups and restores, originally also covered. If I could just add a few things. So just going back to the TinyMCE plugin, so we already have something created for TinyMCE, but like we said, the TinyMCE is quite strict on the syntax. So it's just dealing with how we can make the existing translation spans compatible with TinyMCE, so that it allows the otherwise, all the other functionalities for the TinyMCE plugin is available. I think you would be able to find that on the Moodle Academy GitHub repository. Still not complete, but there's something work in progress that you can have a look at. In terms of Ralph's question regarding translate once and use everywhere. So we've also found that an issue with Moodle Academy and other sites as well where you have a similar text or content that is using the same translation. So our workaround or at least our solution was that every piece of content should have a unique translation hash. And for that, we've added this additional schedule task. So if you would get the latest version of the plugin, I think you would see there's an additional setting in the filter settings for the content translation, for the schedule task on the fields on the table that you want the schedule task to run against and to find if there is a duplicate MD5 key, then it will generate a new one. And then another schedule task would then see, okay, there's a new there's a new span tag. Let me see is a matching translation that I can take towards that. So basically what it does is that every content now gets a new span tag, sorry, hash. And then if there is a matching translation, then a copy of the translation is made for that particular content. Now to translations, I mean no translations are shared, it's just a copy over. So if somebody wants to update a particular translation for a particular text, it only affects that, even though the share translations, but that translation is a copy over of the original translation record. So that helps, but also your translation table grows massively as well. But I think that helps fix or at least address that issue of having different translations for different context. Yeah. So as a Moodle developer, building a filter, the one thing you should always remember is that filters should not make the database calls and they should not make web service calls because it's really important that filters run really, really quickly because they run potentially on huge a huge number of times on every page load. This plugin obviously has to violate both of those principles. So if you've got Google Translate enabled, then the page the first time you view a page if it's all completely new content there could be tens if not over 100 calls to Google Translate to render the page which has a performance implication even if you're even if the translations are crashed or you're using or you're just using manual translations potentially there's a lot of database calls. So you do also need to take care with this from a performance perspective. John Cutie translator is needing full editing rights. So, yeah that does seem important doesn't it? This is a limitation. Because of the way translations get shared across different courses because of the limited very limited information that the filter has while it's running it's almost impossible to meaningfully implement capability restrictions. For example, a course summary would be displayed on the dashboard of a user so that means anyone so it's probably a bad example it's very hard to manage and it's one of the architectural limitations of this approach. This is the least bad way to implement translation within Moodle. Moodle has been brilliant in the way it's supported multilingual content coming from the other direction with language packs, with filter and things like that. But architecturally translating user generated content the architecture is not there and this is the best approach that could be arrived at so there isn't a issue there. Just to mention that although the translator rule can access basically all the content that needs to be translated through the reports but they actually do not need to have editing roles I think that's something that we missed to mention so you don't need to have full editing roles but technically it's still possible through the reports to view content that you are not supposed to access so if you go into inline translation mode you do not need to have course editing right so you can't make any changes to the course content but you can update just the translations so yeah and there are other things that we still need to work out but you don't need editing role at the moment for the course content yeah maybe it would help to say a bit more about the permissions for the user of the translation plugin because there seem to be separate permissions that allow the translator to start their translation at the moment so the translation capabilities are applied at a different role which is given at the course at the site context level so course editing roles rights are given at individual course level but for the translator to translate something they need to be enabled at the site level at the site context level so that's the only difference that we have at the moment I hope that answers your question so there are two separate there are two separate roles one for editing rights that a normal teacher would have but for a translator they would not have any editing rights to the course yeah that was my impression I'm speaking from the experience of using it in Moodle Academy so it seems like you have permission to translate actually just the language that you've been given permission to be a translator so the access actually is not so wide or so dangerous but maybe that's special for Moodle Academy in general we are using the same plugin that is available on the plugins directory so yeah we've got at the moment just restrictions on who can translate so that is given in a separate role applied at the at the system level and there is a permission capability that allows people to be able to do inline translation or not and that is separate from course editing rights and roles so let's quickly wrap up the session so thank you very much for joining and if you've enjoyed this session consider getting involved further and help Moodle Academy grow you can suggest ideas for new topics for webinars or courses you can go into our get involved course and then suggest an idea or vote for an existing idea suggested by others you could contribute to webinars or courses a webinar such as this one you could help us co-present or co-create courses and you could also help us translate our courses in other languages you would be using the plugin that we discussed in this session today and you will help translate courses in other languages and you know the whole idea like I mentioned in this session today is that you know is to make Moodle Academy more inclusive and please also help spread the word about Moodle Academy you can tell your friends and your colleagues about Moodle Academy and about the MEC when you complete a course on Moodle Academy you get a package and if you are an educator you could consider taking the Moodle Educator Certification these are you ready for the MEC quiz which you could take and once you complete that you know one of our certified Moodle providers is going to support you through the entire certification process and in the end thank you very much for joining thank you Andrew for your time and sharing your initial experience in this plugin and we hope to see all of you in a future Moodle Academy webinar


Hey everybody, welcome back to my Star Wars channel. My name is David and today I want to talk to you about the Galaxy's Edge Popcorn Buckets. We would be honored if you would join us. Hey everybody, welcome back to the channel. Thanks for showing up. Thanks for being here. If you're new to my channel, I am totally into Star Wars. I am old. I've been around since the very beginning, been following the franchise since the very beginning. And I use this channel just to talk about everything that I love about Star Wars. Basically, if it has Star Wars on it, I love it. I'm a fan.  That includes the new movies. I love the new TV shows. I love Galaxy's Edge. I love Disney. I love all of that. I did a review a while back for the Millennium Falcon Popcorn Bucket. If you haven't watched that, go out and check that out. But that was my first one. And I don't mean that was my first Star Wars popcorn bucket. That was my first collectible popcorn bucket. I mean, I've always got the refill buckets that you get for your kids. I've always got those that look like little sandpales, something you take to the beach, but never got the collectibles and certainly never got anything in the parks itself. I know people rush down to the parks when the new popcorn buckets drop. Did you see the lines for the figment popcorn buckets? It was insane. People went crazy for those figment popcorn buckets. I was so blown away. And still, at that point, I'd only ever had the one, just the Millennium Falcon one. And I know some girls, you just use it even as a purse because it kind of looks like a Millennium Falcon purse. But since I've been back for my most recent trip to Disney World, I saw there were some people still walking around with the mouse droid. And I kind of came back thinking, you know what, I would like to get the mouse droid. So here's my philosophy on popcorn buckets and some of those things. I know people say, ooh, rush down there and get them before they sell out. You can always get them on eBay. You can. You can always get them on eBay. And I know people hike the prices up. Usually they hike the prices up when they're hot. When they're hot, when they're new, when everyone's clamoring to go get them, that's when the prices go up. But if you wait a while, the prices come back down because people end up buying those popcorn buckets and not selling them, especially something like this, what I'm going to show you today. And I got mine for just around about the same price that you could get up in the parks. So let's say, I think they were $20 and $25-ish when they were in the parks. And I got mine for $30. So you pay five extra bucks plus shipping and you don't have to run down to the parks to get them. You don't have to worry about how do I put these in my luggage and take them home. You don't got to worry about luggage or anything. Someone else boxes it up. Someone else go stands in line for you. Someone else ships it to you. And for a couple of extra bucks, it gets shipped right to your door. I mean, I don't live in Florida. So if I can have it shipped to me for a couple extra bucks, great. Today I want to look at the two I got recently. So we're going to look at the Mousdroid and the Black Tie Fighter from the Force Awakens. I'm going to show both of them to you like one at a time. The Black Tie Fighter from Force Awakens is humongous.  This is big too, but it's bigger in a different way because there's just more, I don't know, there's more 3D to it. It just seems bigger. And it really does seem like a tie fighter, you know, your kids could play with, even though the wings aren't necessarily the right size for the cockpit, right? In real life, the wings should be a lot bigger if the cockpit is this size. But the little top opens up and that's where the popcorn goes. Of course, it just goes in that cockpit housing. I believe, I believe these came out in 2015. So they're six years old, right? Six years old for a popcorn bucket that I paid $32 for. And I think originally it was 25. So, you know, not much of a price gouge and happy to pay it so that it could be on my shelf and be a collectible. I'll show you what the wings look like when they pop off. You just kind of wiggle it back and forth and they just come right off pretty easily.  And I'll show you what the wing looks like just by itself. Just the detail work that's on one side really does look like a molded cast of what tie fighter wings look like. The other side is a little bit more simpler, right? And then you got the carry strap, right? Carry strap. And the carry strap says Force Awakens on it. I love how it's got the extra color of the red canopy. So that's cool. And it's, I think it's cool.  So happy, happy to get that one. And then the other one that I just picked up was the mouse droid. Now we call it the mouse droid, but it's really the MSE-6 droid. And I believe this came out in 2019. So for me, right now it's two years old. But the cool thing about this is it's more of the right shape.  Now I'm sure the experts, right, the experts, the people that know, they would say, oh no, it's two inches shorter or whatever. But I mean, it's approximately, right? Approximately the size. And the wheels turn. The wheels really turn on this. It's so cool. Like they could have just made it, you know, and cast it so the wheels didn't turn and just made it all one piece. But this feature is that the wheels turn. Now the carry strap on this one is like the brown carry strap that you're also going to see on some of the drink carriers in Galaxy's Edge. So it's a similar, just kind of a beat up kind of brownish. And then the flap for the popcorn is on the top. So you got that and molded detail all the way around. Underneath you got a recommended age sticker and some copyright and all that kind of stuff at the bottom. But I've seen a lot of people still carry these in the parks. So the mouse droid seems to be one of the favored popcorn buckets to bring back as fans. Because when you wear it around your neck, it's just literally like right there like a feeding drop, right? And the tie fighter is really big and bulky and you'd have to kind of carry it off to the side. The Falcon again, also big and bulky. But the mouse droid, perfect size. I've seen a lot of my favorite TikTokers. They carry the mouse droid around as well. Question for you. Question for you. Which one's your favorite? Okay. So what's your, what's your favorite Star Wars? Star Wars popcorn bucket? I mean, if you want to tell me your favorite popcorn bucket, that's fine too. Are there others? Because I honestly don't know. I honestly don't know. Like these are the only ones I've ever seen Star Wars. So is there another Star Wars popcorn bucket I'm missing or could add to my collection? Tell me down in the comment section below and I will look for it as well, unless it's one of those super rare ones that are impossible to find. Hey, I hope you are liking the little Boba Fett shorts that I'm doing down below. Those are just extra footage from my TikTok channel. So I have a TikTok channel, Mandalorian Magic. You can follow me over on TikTok. I do these little Boba Fett shorts. I do them every single day.  I'm not, I'm not trying to be famous or creative or original or anything. It's just, it's just me goofing off. And the great thing is putting them on the YouTube channel has kind of boosted viewership. So more people are watching the channel now than were before. So that's just, it's just fun. If you like it, you like it. If you don't, that's fine. You know, it's just, it's just me being silly. And we, and we have, we all have to have that kind of outlet, right? My Disney World trip coming up almost in the hundred days. Okay. It's almost, almost a hundred days away. So getting super stoked about that. Gonna have a ton of fun. Gonna head down to Galaxy's Edge twice on two different days. And hopefully, hopefully be able to do the build your own lightsaber experience. Looking forward to doing that. Thanks for watching, guys. Thanks for hanging out with me and may the force be with you. I'll see you next time. Bye.


You know what I mean? I listen to a little bit of Tupac. I mean, like, I had the blessing of being around all of it. You know? Right. Did Tupac ever came down? Yeah. That's what I mean. Tupac. Yes, he came down. So you met him? Not.  And like, you know, they'd make that for you. And so the easy, he's the same way. Easy.  Music enjoyed the entire world. People come from other countries, they know their music because they know the power of what it does to you. And you look at them and say, those days, they lived a very hard life, you know, back then. And to do what they did together and bring joy to the world, that's huge.  You're listening to it. It just totally comes you down and you say, I think I have a problem? Get off of it. I'm not having a problem. I don't want to have to go through it even, you know. They're so true. Because, you know, their life was a danger a lot of times, too. Yeah. What mood do you have to be in to listen to Gangsta Rap? I don't really need much of a mood for that. Okay. I mean, music is, you know, sometimes it changes my mood just by listening to some things. And who is your favorite Gangsta Rap? Well, that would be hard. That would be hard. That would be hard. That would be hard. Seriously.  Right. Have you ever came down? Yeah. Tupac. Tupac. Yes, he came down. So you met him? Not.   And so the easy, he's the same way. Easy.  What about? I want to ask about it. There are lots of people coming through because back then no one was accepting the music or the lifestyle, including our people. Right. Of course. Our people.  I'm not coming. Yeah.  Have it. I know these kids. Don't worry about it. Just come over. Yeah. They'll be okay. They're not, they're not dogs.  They're not dangerous. They're not dangerous. And that's how people talk. Prolictionally, all the ladies are like, my children can't come in here. I'm like, Oh my God. Oh, of course, when they got the record deals and all this money. Now they want to be part of it. Oh, now they want to be part of it. Oh, you think it's not baby? I've got, I've got these fancy cars I want to move and all. And that must be me. Like, oh, it was a whole different scene. They changed their tune once they seen that. That's how life then. It may be sad. It's just people. I know. It may be sad. Just see that people. People are not real. It's certain ways. People can be fake. It's fake love. It's not real. And they just running after something that's shiny and it draws them. Yeah. Because if they lost the money, they will go right back to the people will go right back to treating them the same way as how they used to treat them. Well, I think it's because of lack of awareness. Yeah. You know, a lot of us, we have beautiful people in this country, in the universe too. It's not that they're bad people. They are misinformed, they're misguided. And they don't know who the right person in charge of everything is. That's good. That's good. Yeah, we on Boss Talk 101.


We are recording in 3, 2, 1. What is up guys and welcome back to the John and G channel. Thanks so much for watching.   No matter what you are and what area you're in, you need to be in TikTok in 2020 and if not like right now. So let's get into it. Three reasons why you need to be on TikTok. Number one, it's got the attention. Number two, it has the awareness. And number three, it's explosive. And for those already in the mindset of, well I have Facebook, I have Instagram, I'm good to go right. Like I don't need to be on TikTok. It's just for young people. Like here it's just only for the, for the little kid. I would very politely disagree with you because I have seen firsthand what TikTok can do to one person, what TikTok can do to a brand. Okay. Multiple brands and businesses are now jumping into TikTok. Why? Because of the three things. The awareness, the attention, and it's explosive. Okay. For example, let's take me, for example. I'm pulling up a screenshot from October 1st of this year. Okay. At 6.57 pm, I had 62 followers with 60 videos, right? And that's not a lot. Obviously just getting into this. Fast forward to November 19th, which is today. Right now I have 15.3 thousand followers on TikTok. That in and of itself is amazing. I'm on YouTube. I'm on Facebook. I'm on Instagram. I'm on Snapchat. I'm on Twitter. The amount of followers combines not equate to 15.3 thousand. Okay. So from October 1st to November 19th, I gained 15,000 followers. Now I didn't do anything crazy. I didn't do, I didn't put myself like way out there as you, you know, people might think, now you may think to yourself, do I need to make something viral or do I need to be even more crazy? Do I have to be crazy? Even though I'm not crazy, like what do I do to get that many followers? And let me just say this. That's not a crazy amount of followers in a short amount of time. Like I've seen other people get 70,000, 100,000 in like a few weeks, a couple of days. But that's like, that's, that's, that's why I'm talking about TikTok. It's explosive. It's what you need to be on because the attention's here. I'm gonna, I'm gonna get into it. I get excited. I get excited about it. Okay. Back to this screenshot. On October 1st, I started posting a lot more on TikTok because I was like, you know, let me just give this app a chance. Let's see what I can do and see what kind of content the market responds to. What I posted after that was I duct taped my phone to a drone and, you know, I flew it in the air. And so this is that video. What you're saying is I shouldn't attach my phone to the drone and fly it, right? Well, yeah, of course you shouldn't. Like I, wait, yes, of course I should. No, you should not. But I feel like it would be just, I'm interested in seeing what that would look like on a phone. I don't think you should do that, babe. You're positive I shouldn't do it? I'm sorry. Okay. So what I'm hearing you say for the last time, do not attach my phone to the drone. What should you do? I will, I'm thinking about doing it. Okay. So this screenshot right here, October 3rd. On October 3rd, two days after I posted the video of me duct taping my phone to my drone, I have 1500 followers and 12.4,000 likes. So in the span of two days, I gained more than like a thousand followers, more than 1300 followers, and I gained a lot of likes on that one video.  I wasn't trying to get viral on TikTok. That one video, for some reason, TikTok grabbed it and it sent it out to about 500 people in the first two to three hours. And then after two days, after seeing the likes and the comments, it started generating more interest. And so that's how I got more followers and more likes on that one video and my overall profile. And that same kind of thing has been happening every now and then when I post content, right? So there've been a few videos that kind of just shot up and then, okay, I got a few hundred more followers within a couple of days, a couple more thousand more likes and so on and so forth, right? And then something really funny happened. I went to Alaska. Now let me get into the backstory. I saw Schemas, the rapper, and his girlfriend walking to the airport. And they were all dressed in Louis Vuitton, nice shoes, nice clothing. I'm like, okay, these guys have a lot of money. There's a story to them. How do I capitalize on it? And that's just how I think, how can I make this a moment worth sharing and worth telling, right? How can I make a story out of it? The people that I was with were kind of like, dude, don't do anything. It's fine. It's too early. We have to get on this flight. Don't worry about that. But I just kept pressing on because I'm all about creating that content, creating, just doing it, getting it, grinding it. Sorry, I'm just getting excited again. I did something and the whole experience of him paying me $60 to get in front of me because he needed to get on the flight. And the line was literally so, so long. MSP was just, it was backed up for days. Okay. I just, I took out my phone and I started filming. I started filming different bits and pieces of what was going on, like this guy paying me $60. And mind you, what TikTok does is it favors content that has music behind the video. So I didn't talk.  So this is that video here. After I posted that video, I was like, all right, let's see what happens. And at first I thought, you know what, this isn't good enough. So I reposted it a different time, which was, I think an hour later when we were kind of getting on the airplane. So I reposted it then thinking, okay, this is not going to do well. I get, this is crazy. We, we know we do the flight. We have two stops to go to Seattle and then we go to Alaska. And I checked my phone after this flight and I have hundreds of followers following me and I get notifications saying 231 followers followed you and 100 followers followed you and so many likes and so forth. So long story short by the end of that trip on October 27th at 745 p.m. I had 10.4,000 followers all because of one video. So a couple things come to mind. One, I didn't do anything viral, like do anything crazy out of my comfort zone. I didn't try to do it. It kind of just happened. Number two, the way that I used that video and the TikTok app all correlated together to catch, to capture that one moment and a TikTok distributed that one moment to the world, quite literally. Again, I want to say that TikTok is those three things. It's got the attention. It has the awareness and it's explosive. Take me for example, that's literally what happened. And from that point on, I realized I can make it on this TikTok app. I can literally do something. And from October 27th to November 19th and less than a month, like literally less than a month, not even 30 days, I'm at 15.3,000. To me is incredible. I never thought that I would have more than 10,000 followers on one given platform to have 15,000 on TikTok. It's just, it's crazy, right? And so from that, I'm getting different people reaching out to me about brands and sponsorships and like kind of, you know, some partnerships in the works, all because of me wanting to take hold of the app. It's not just for young people. I have to utilize it for me because I want to be a YouTube personality. I want to be in that world, in that business.  If you're any one of those people, any one of those things and you have the desire to grow in that skill set, whatever you're into, you need to be on TikTok because it's just so many people. It's got the attention. The attention is so important. We've heard it all over it. Content is king, but also the attention is double king. I don't know if that's a thing. I mean, it just, it really is kind of crazy to think that one app could control a lot of the attention. I think it's siphoning off a lot of Instagram's followers, a lot of Facebook followers.  And so the way that you use TikTok needs to be different than how I use TikTok. Make fun entertaining content pertaining to your business. It doesn't have to be all corporate suits, rad meeting, doing this. These are the numbers for next year's, no, like kind of flip it because TikTok favors non quality made videos, if that makes sense. So instead of pulling out your DSLR, pull out your iPhone and just film something entertaining. If you're in the music side, if you're an artist, you need to be showcasing your talents on this app. If you play guitar, play guitar between 10 and 15 seconds and showcase like your best guitar playing or singing, piano player, drummer, whatever you are, you need to be doing this kind of content. You need to start thinking a little bit different only because those three things are now in TikTok. They weren't Facebook. They weren't Instagram. People said Facebook was for all for the young kids. And now the old people need young kids to market to Facebook and to market to the market. TikTok is here guys. TikTok is one of the apps that you need to be going hard on. And if you're not, you're going to lose and you're going to regret it. And then you're going to be like, Oh, I probably got on TikTok because everybody else is on TikTok. Meanwhile, me and other people are like, Oh, we have 1000 and 1000 followers. Sorry that you didn't catch up. Sorry that you, sorry that you didn't get on the platform quick enough or early enough. And there it is guys, my two cents on the three reasons why you need to be on TikTok. Like you need to be on it now. Like get make an account today and start posting content, start posting content that you like, try different things and try to make it on the app. Like that's what I'm trying to do. Now again, you don't have to try to make it. But if you're running a business, if you're an artist, if you're an entrepreneur, you need to be on TikTok because you can siphon a lot of that attention, a lot of business. You can sell your product down there. You can make entertaining content that pertains to you and your business. So it's all a cyclical circle of life that needs to be on TikTok. You need to be on it. As always guys, thanks so much for watching. If you found this valuable and if you found this helpful, please drop a like, drop a comment as to what you learned from it. And please subscribe to the channel and thanks so much for watching. And I'll catch you next time on the John and Q channel. Peace. All right, I gotta go make a TikTok. I'll see you later.


Welcome to Spotlight Advanced. I'm Adam Navas. And I'm Bruce Gulland. Spotlight uses a special English method of broadcasting. It is easier for people to understand, no matter where in the world they live. How do you fix a community that is broken? How do you bring people together to make a positive change? Wagner is a city in South Dakota, in the United States. There are two main people groups in Wagner. There are many white people, and there are Native Americans living nearby. And like in many other places, these differences have led to racial tensions. Not all people are treated equally. This influences many parts of life. It makes progress in the town slow. The community wanted to improve these tensions. People from different backgrounds and different races joined together to achieve this goal. In 2008, they started with something simple, even though it was also very difficult. They talked to each other. The community in Wagner started study circles. These were small groups of people who met together. They discussed important issues in the community. People did not always agree, but they always respected each other. The community of Wagner saw the benefits of these study circles. They wanted these groups to continue. In the groups, they talked about hard issues. They talked about poverty. They addressed how people in the community had hurt people different than them. They wanted to fix this hatred. They wanted to bring more diversity to their city. They wanted to make life better for everyone in their community. They knew it would take time and lots of work. They stayed engaged. Today's spotlight program is the eighth in a series of ten programs. In this series of programs, we are looking at ten ways to fight hate. Hate is powerful enough to damage people and communities. The Southern Poverty Law Center has made this list of ten ways to fight hate in your community. On today's spotlight, we will look at the eighth way to fight hate in your community. Stay engaged. Sometimes there is one act of hate that you can fight against. There is one rally or one hateful person. But usually, hate runs deeper. You may have to work for a long time to get rid of it. This spotlight program is about how to fight hate when the problem is too big or too deep to go away quickly. Big problems like discrimination and racial hatred may take a long time to heal. People must work hard to get rid of hate in their communities. That hard work may take a long time. People must look toward the future. The Southern Poverty Law Center, or SPLC, says that planning for your community's future is important. Every community has problems. But when people do not look at or deal with the problems, the problems seem bigger. They become more difficult to solve. And the future of the community looks frightening. This is especially true with the problem of hate in a community. So the SPLC encourages communities to stay engaged. That is, it is important that communities do not give up in the fight against hate. They must plan for the community's future. The problem of hate does not usually come from outside a community.  Groups of people may blame each other for problems in the community. Or people may feel as if they have no voice in their community. They feel unsupported and powerless. Differences and change can cause fear. And fear can lead to hate. Communities can deal with fear and hate. The SPLC says that a tolerant and united community can stand against hate. Imagine a community that accepts people no matter who they are or what they believe. That community does not accept hate. Hate cannot exist if people do not let it. Stopping hate in your community will improve your community's future. But where can you start? The SPLC says that the first step to changing your community is to change yourself. You can change the way you speak about people who are different than you. You can also change the way you think about people who are different than you. Do you have an opinion about a particular group of people? These opinions are biases. They can negatively influence your actions in your community. Changes in individuals are very important. But changes in the whole community are important too. And there are many things people can do to encourage communication and tolerance in a community. There are many examples of groups who worked together and stayed engaged to fight hate in their communities. Here is one example you can use in your community. Everyday Democracy is a group that helps communities discuss issues with each other. One way they do this is with study circles. These study groups are one way to start community discussions. We talked about how this worked in Wagner, South Dakota at the beginning of the program. Study groups are safe places for different people to talk with each other about their opinions and beliefs. People from different groups can come together and get to know each other. You can start a study circle in your community. In fact, you can start any group to talk openly about the issues in your community. These groups should accept every person. They should respect every person's opinion. And when people in a study circle talk, they do not always have to agree on everything. That is even part of the fun. People who join study circles gain understanding of different people. They gain hope for a better future. They know that they can help to solve problems and conflicts in their community. People in a community should be able to live together in peace. How will you help plan and influence the future of where you live? Hate will not disappear overnight.  This is the eighth program in a series of ten programs on ten ways to fight hate. This list is from the Southern Poverty Law Center. The Southern Poverty Law Center is a group that works toward racial justice. They monitor hate crimes, teach tolerance and seek justice. Here are their ten ways to fight hate. Act. Join forces. Support the victims. Speak up. Educate yourself. Create an alternative. Pressure leaders. Stay engaged. Teach acceptance. And dig deeper. The third were from the United States and the United Kingdom. All quotes were adapted for this program and voiced by Spotlight. You can listen to this program again and read it on the internet at www.spotlightenglish.com. This program is called Ten Ways to Fight Hate. Stay Engaged. Visit our website to download our free official app for Android and Apple devices. We hope you can join us again for the next Spotlight program. Goodbye.


Now that Ubuntu 21.04 is out and everyone who wants to has had a chance to install and play around with it It's time to look forward to what's next the next release of Ubuntu will come out in October and it'll be called 21.10 We have the code name. I can't pronounce it as usual. It's impish Idri something like that. It's really weird But no matter what the name is we do know a little bit about what we should get in 21.10 So today what we're going to do is take a look ahead at what features we'll see in that release but first we should know that This is very early in the development stage. None of these features have truly been announced and Even the ones that we know of for sure Maybe dropped before we get to the release because of bugs or whatever So take what we talk about today with a grain of salt and just know that we won't know for sure what features We're gonna get until probably August ish Maybe even a little bit later than that. So let's go ahead and jump in So it's probably the biggest thing that we'll see in 21.10 when we get there is A new installer now Ubuntu has been using the ubiquity installer for At least a decade quite a long time. It's showing its age, especially when compared to something like calamari's now Why Ubuntu has just not chosen just to use calamari's I don't know I'm not exactly sure what their reasoning is what they've chosen to do instead is write themselves a new installer based on Flutter now Flutter is a web technology is Development package SDK thing that I don't truly understand. It may not even be really based on the web stuff I'm not like that. I don't understand all the goings on behind it I'm not a developer at all. All I know is that it's a cross-platform development SDK thing that will allow developers to write Packages that function on multiple systems. So we should see in 21.10 that brand new installer We do have some idea of what it will look like if you see here on the screen We've seen some mock-ups of what it will look like And it will look a little bit different than what ubiquity looks like But it's not going to be so totally different than what ubiquity is We should expect it to be at least a little bit faster me and maybe possibly Surface some options that have been buried before in a big way. So that's one thing. We'll expect to see Outside of the installer The next biggest thing we'll see is something to do with GNOME 40 now if you've never seen GNOME 40 I have a video and I'll try to put it up in the tags and link it below if I remember But basically GNOME 40 is a completely new change or They bill it as a completely new change to what GNOME has always done. They've moved the dock They've changed the way multitasking works and stuff If you know anything about the way Ubuntu works that you'll know that in 21.04 Ubuntu actually skipped GNOME 40 And they stayed on GNOME 3.38 They did take some applications from GNOME 40 specifically things like the to-do app and maps I believe and a couple other ones And put them in here. Those are GNOME 40 apps But the rest of everything here is GNOME dot three three dot three eight in Ubuntu 21.10 we should see for the first time what Ubuntu will be doing with all that new shiny GNOME stuff It remains to be seen how much of the new design from GNOME. They actually adopt It would surprise me Greatly if they actually changed the UI of Ubuntu. They've had this side panel here And the top panel here for so long going going back to the unity days I doubt very much to actually change it now. I hope that they do change it I would really like them to adopt some of the GNOME stuff just because I like things to change every once in a while, but It really would surprise me if we get anything in terms of a UI refresh For Ubuntu So don't be surprised when Ubuntu 21.10 comes out It looks basically like this in terms of stuff that will actually will get put in here from GNOME 40 We'll see an update to most of the apps for GNOME 40 We'll see things like Nautilus 40 things like the calculator and calendar and all that kind of stuff all updated to GNOME 40 stuff In terms of the UI and stuff it still remains very much to be seen How much of the GNOME 40 stuff as actually put into the next Ubuntu release and finally Most of the rest of the stuff that we expect to see will be under the hood things like a brand new kernel We'll probably see 5.14 in the next Ubuntu release That'll bring along with it more hardware support for newer hardware and so on and so forth the stuff You would normally get with a new kernel We'll also see things like GCC 11, which will be the default system compiler We'll also see the GNUC library 2.34 several other under the hood stuff that most people don't really care about and We'll also see probably some Tweaks and stuff that we're trying to get perfected for the LTS 21.10 is a very important release for canonical in Ubuntu because it's the last interim release before the LTS so anything that goes into 21.10 is likely going to be Something that will have to be very much polished before it goes into the LTS because They don't want to put anything in the LTS that's going to cause a lot of problems So if Wayland for some reason hasn't really been worked on or hasn't been perfected by the time 21.10 comes around we'll see more improvements there But it may we may start seeing some news items saying that maybe Wayland doesn't come to 20 22.04, which is the next LTS Things like going on 40 and stuff like all that's any changes they bring in for get them 40 We'll have to be perfected in 21.10 because if it's not 21 or 22.04 probably won't see those things so 21.10 is their last chance to get all this stuff kind of put together I would expect 21.10 to be a much bigger release than what we saw with 21.04 Simply because we have the gun on 40 stuff. We have a new kernel We have the new installer all this stuff is going to be put into this last release before the LTS and We'll probably see some more point releases and stuff, you know between 21.10 and 22.04 Simply because they need to go through and get a lot of this stuff actually Polished up and buttoned up before the LTS comes out. So That's a boom to 21.10. There's not a lot. We know for sure now the installer will probably for sure see In the betas and stuff the only way we wouldn't see that probably is if it's not ready to go by the time They ship it in which case we probably won't see until next year probably 22.10 Because if it's not ready for this 21 For this interim release, it had to wait till the next interim release. They would not do something brand new in the LTS The gun on 40 stuff is really the biggest question mark. We still have we don't know What of the gun on 40 stuff? They're going to pull in specifically with the new UI elements of gun on 40 What is going to change? Like I said before I personally hope they change the UI But I don't think that that's going to happen So in the comments below tell me what you're looking forward to the most with 21.10 Make sure you like comment and subscribe You can support me on patreon at patreon.com slash linus cast Before I go I'd like to take a moment to thank our current patrons Devon Marcus Magland Donnie Sven Merrick camp and Mitchell Thanks everybody for watching. I'll see you next time


In this video, we're going to look at secular humanism. Now, secular humanism, or the advocates of secular humanism, are emphatic in claiming that secular humanism is not a religion. Instead, what they say is that secular humanism is a practical philosophy, it's good practical wisdom. Now, instead of trying to base this practical wisdom on some kind of esoteric metaphysical principle, or revelation, or mystical experience, or anything like that, the advocates of secular humanism say they draw upon the best of human reason. And so that means that they'll follow standards and methods that you'll find in the physical sciences, and ethical theory, and a philosophy that, again, doesn't appeal to some kind of weird metaphysical principle or mysticism, but instead is something that can be discovered, known, and made intelligible by human reason. Now, the advocates of secular humanism have, or at least according to this writing, to have six main characteristics for secular humanism. The first is that there's a particular method of inquiry. I briefly mentioned this before, but this is exemplified by the physical sciences. Second is a natural cosmic outlook. So, in simplest terms, what this means is that they're not trying to appeal to anything supernatural. On that same line, secular humanism is explicitly non-theistic. They are not going to appeal to some kind of divinity for any kind of explanation, especially for anything natural, and especially for any sort of ethical theory. I got on those lines that their ethical theory will be not only humanist, meaning that it is derived from and just derived from human beings as opposed to some sort of religious principle or divinity, and is going to be agreeable to human reason. Second, humanism advocates democratic principles to govern society. And finally, second, humanism recognizes that a single culture, a single human, a single group cannot make the changes necessary for humanity. Instead, what secular humanism claims is that we all pretty much have to work together to succeed in our own society and for society to thrive. The first characteristic of secular humanism deals with the method of inquiry, and this is how secular humanists say we should go about trying to discover answers to questions. The first thing to note or the first thing they want to insist upon is that the methods given by the physical sciences are the exemplar. This is the best way to start answering these questions about what goes on in the world or what we should do. So this is basically, at least according to this reading, the hypothetical deductive method. So one has a hypothesis to explain some event or phenomena, especially the cause relationships involved in the event or phenomena, and it constructs a hypothesis, and then they construct an experiment to either confirm or disconfirm the hypothesis. Without the experiment, there's nothing there that could be either confirmed or disconfirmed, and so it's really not worth looking at. Theories are further evaluated in terms of their simplicity, their mathematical elegance, how well they fit into other well-confirmed theories, or even provide better or more explanation for what's going on. The second thing is that all the evidence, all the reasoning, all justification for whatever conclusion you're trying to reach, must in principle be observable. People must be able to see what's going on and reach the same conclusion. Kind of in contrast to the secular humanism rejects any kind of private intuitions, any mystical experiences, any kind of spiritual revelations, for the simple fact that, you know, this is inherently a private thing. This can't be shared with others. If we were to allow for such private intuitions as justification, then there would be a force to say that we have to believe what somebody else claims is true without being able to see the evidence for ourselves. Finally, you know, that kind of goes along with this, is that, you know, views that are, or theories that are well-confirmed, or ones that are confirmed through intersubjective confirmation. Again, this is appealing to this idea that in principle we all have to be able to observe it and reach the same conclusion. If we don't reach the same conclusion, if, you know, everybody has an equal chance and then the reasoning is well done, if, you know, people just go, you know, observe the evidence again and again, and we don't have this intersubjective confirmation. If there isn't consensus on whether the hypothesis is confirmed or disconfirmed, then you must withhold judgment. That's not the same thing as proving it's false, right? It's just saying this is not something that can reasonably be believed. So this is the first characteristic of secondary humanism, that the methods of inquiry most best resemble what happens in the physical sciences. The fourth characteristic of secondary humanism is that it's a naturalistic cosmic outlook. Now, in brief concerns, what this means is that the explanations for our existence are meaning what we're supposed to be, we're supposed to do, where we're going. All of this must be, must firmly be planted in this, you know, the universe, right, in the existing universe. Not some obscure metaphysical principle, not some deity, not some other worldly heaven or anything like that, right? Our meaning is found here. It's not found somewhere else. And, you know, as long as you're dealing with what's happening here, that's great, right? Whatever explanations you provide, if they're drawing from what happens here in existence, what actually happens, then that's perfectly legitimate. In fact, you should do that. So, you know, this outlook, this explanation of who we are and where we're going and what we're supposed to be, can draw not only just from the physical sciences, but history, ethics, philosophy. It can draw from the best of what human creative endeavors can do, right? You can pull from art, you can pull from psychology. That's fine, provided they follow, you know, the proper methods of inquiry and provide there's interest-objective confirmation. But this explanation of who and what we are must be drawn from all of this. We must consider it all together. It's got to be synoptic. If we're going to understand who and what we are, we have to draw from the best and all of what human reason can provide. The advocates of seconding humanism are clear. Seconding humanism is non-theistic. If you're going to do seconding humanism, you cannot appeal to divinity, any kind of divine to provide any explanation. All explanations, you know, the reasoning deals with, you know, the reason why they do this is it has to do with the methods of inquiry. Any kind of appeal to a divinity is going to have to be at best some kind of appeal to some kind of mystical experience, some kind of particular intuition, because we don't have interest-objective agreement on any kind of divinity. It's not as if there's a divinity amongst us every day saying, by the way, I'm here and here's what you should do, right? If a divinity did do that, seconding humanism probably would allow for something like that at that point and say because then we can all reach interest-objective agreement. So any kind of explanation of who and what we are and our meaning, our place in the universe, cannot appeal to anything supernatural, right? The only thing that exists is what's natural. Seconding humanism rejects the efficacy of prayer, right? Prayer doesn't work for seconding humanism. Any kind of salvation received from a deity, right? Salvation is found in humans, it's found in us, not in some kind of God. The soul is not separate from the body. If indeed there is a soul, after all, we haven't been able to find it using the physical sciences. There's no empirical confirmation for soul. And there's no difference between the mind and the brain, right? There is no mind-brain, mind-body duality, there's just the brain, right? That's where your mind is. Again, you can't see a mind, you can only see brains, and that's what we get through interest-objective confirmation. I, you know, maybe another way of saying non-theism is that seconding humanism rejects anything not supernatural, anything that can't be found, discovered, investigated, or discussed in the physical sciences. Now, at least some people are quick to claim that since seconding humanism rejects any kind of divinity, that then there's no possible ethical theory. Well, seconding humanists respectfully disagree and say, well, no, there's lots of ethical theory we can do without appeal to any kind of divinity. In fact, it's probably easier, right? Every time we appeal to a divinity, we are talking about something we cannot understand, right? It's not a physical thing, it's not a temporal thing, it's not even an emotional thing. Trying to understand what a divinity would be like us as a person is, at best, difficult, if not impossible, right? And add on to the fact that we can't reach interest-objective agreement on what this is going to be like. In fact, some religions claim that the minute you try to anthropomorphize the divinity, you've committed a heresy. So, let's let the second humanist say, let's not pretend we can do ethical theory by appealing to a divinity. After all, that's not like us. On top of that, second humanist claim, we can do lots of ethical theory by simply looking at us, right? In fact, most ethical theories are like this. They look at what we in fact do, how we in fact operate, what we are in fact like in order to figure out what we what's good for us. And we think of health. We can look at the concrete actions that we actually perform, eating potatoes versus raw broccoli, right? And it's not hard to discover from those two actions which one's actually better, right?  Whereas eating raw broccoli, the whole tends to be better for you. So, second humanists are quick to point out that it's not hard to look at what's healthy, look at what we actually do to figure out what's healthy. Let's look at the rest of what we do to figure out some of these other moral claims. We start to talk about rights. We could look at the nature of our wills and our decisions. After all, this is what John Locke and Emmanuel Conte have done. When we talk about what it means to thrive as a human being, we could look at what Aristotle and Epicurus have written. I mean, these are just a name of a few. I mean, we already do this in a lot of important ways. We already look at what promotes our, you know, try to figure out what promotes our happiness. So the second humanist claim is, look, we just need to carry on that project, right? Let's figure out what actually makes us happy, what actually contributes to human fulfillment and human society thriving, and then there's our ethical theory. And you don't need to appeal to a divine. So we just got finished saying that for the second humanist, ethical theory can be derived from actual human behavior. And well, you know, the next characteristic of humanism is kind of a specific application of that. Second humanist advocate democracy. And, you know, this means that the government is derived from the consent of the people, not from some esoteric principle or some divinity. It is the people that give the authority to the government, nothing else. And this is because of the way that we work. We make decisions. We have free will. Or at least something that looks like free will. And we tend to be miserable when somebody who doesn't know us or represent us or understand us just starts making decisions from on high as to what we should be doing. So instead of the second humanist claims, we need to have some kind of democratic principles for government. This is going to include, you know, such basic notions that policies, laws, representatives should be put in place by the majority of the adults voting in elections. There should be a legal right to opposition, right? Just because a law has been instituted doesn't mean you have to agree with it. Maybe you have to follow it. Or if you're going to not follow it, there has to be some legal recourse to repeal all the law, reject the law, right? To get the law removed. In other words, we have to be able to fix our mistakes, right? That's why I'm in another way of saying that we have to ensure minority rights. Just because the majority is enrolled doesn't mean they get to dictate everything in how a minority should live. There should be a due process of law, not just the whim of some kind of, you know, autocrat on high. And this should be a guarantee of civil liberties. If we're going to be happy, we have to be able to live our lives as we see fit. And a lot of this is really outlined, you know, a lot of these basic ideas are outlined in John Locke's social political philosophy. And yeah, I mean, he has appeals to scripture here and there, but likely that's just to appease his audience. He's certainly not directly appealing to any kind of private revelation to justify claims about who and what we are. Or at the very least, you can go through John Locke's theory, scratch out the parts from any appeal to any kind of private revelation. You still have an intact theory. So, you know, the second humanist says, hey, we don't need to appeal to any kind of theocracy here. In fact, we ought to have a democracy. Finally, second humanism recognizes that, of course, then not everybody's going to agree with them, right? They're not necessitated that everybody must be a second humanist. But they do stipulate that, you know, if there is going to be human thriving, if human society or societies are going to live and prosper, there has to be cooperation amongst all peoples. It just simply cannot be the case that one group of second humanists can dictate to everybody else how they should live or force everybody else how they should live. Or, you know, that second human is working alone, despite what everybody else is doing, can do the job all by themselves. They can't save the planet just by their own efforts. Instead, second humanist says, it's going to take all of us, we, all human beings are going to be the source of our own, to use the phrase, salvation. Human beings are going to be the source in effort that's going to bring humanity to its fullest potential. It can't be just the humanists working by themselves. It can't be just any one group doing the job or enforcing everybody. You can't force everybody to do it all. I mean, that's, maybe you could, right? You pointed out everybody else and make them live the lives of the way that you think they should. But that would be to violate the very principles of second humans. No, second human is safe. We're going to do this. We're going to have to work together.


You know, if you are not disrupting us, challenging us, making us feel uncomfortable, making us question out-of-date belief systems and mindsets, if you are not being what I call skillfully disruptive as a communicator and speaker, then why are we listening to you? What makes you stand out and memorable is that when we listened to you, we felt disturbed, we felt uncomfortable, we felt disrupted and disruption creates movement in human beings and that's what we want you to do with us when you speak to us, address us in whatever way you do. I'm going to be speaking about skillful disruption in DC and in Dallas in September in my event that I'm bringing there. I will see you there because I want you all to become masterful geniuses at skillful disruption. It's a superpower. I'm going to show you how to find it in yourself, in your communication style. I'll see you guys in September.


I graduated from TSC from the Ecomass Masters and now I've been working at Nira for the last four years in the 23rd Pressing Team. I'm Sebastian, I graduated from TSC in 2014 from the Emo Master's Programme, I've been working at Nira for a year now and Nira is an American economic consulting firm which is based in New York and it's doing mostly litigation and advisory. And we're both working in Paris. In my point of view would be the competition analysis, so basically TSC is specialized, I think mostly specialized in industrial organization and we, I think that we mostly use the industrial organization skills, so competition analysis, market analysis. What we do is quite broad actually, so it's really good that we have, so we graduated from different masters actually, so we have different capabilities and it's very good actually, we really appreciate that at Nira having people that specialize in different fields. But in the end, we are both, we both have the same core skills in economics and that's what TSC gave us, which is really, really important. Actually there are quite a few TSC alumni at Nira, so I think that there are a few TSC alumni in London, in Madrid, in Paris, in Berlin, so a bit everywhere. So actually TSC is quite famous at Nira, so it's really a good brand name actually, on the CV. No, I have nothing else to say. What I've learned on the field is the actual world, since I think economics is quite theoretical and to learn how to apply theory in the real world has been an asset. I think that you learn a lot when you start working, we learn a lot especially I think in econometrics, I mean I had done very, very few empirical econometrics before in my studies and we do this quite a lot at Nira. So this is something, one of the key things that we learn and in terms of advice, I would say that I would advise people to stay open actually to different fields. You never know what you're going to end up doing and actually I've been graduated for five years now and I've seen people from TSC doing anything. So stay open, it's very important.