Hello. Hi, everyone. Welcome to ArgoCon and KubeCon. Happy to see you all here. So it's time to start our presentation. As Nick said, we're going to talk about lessons that master class learned from implementing preview apps using Argo CD. And so let's do a quick introduction. So my name is Alexander Matyshenssev. I don't work at master class. Actually, I work at a company called Acuity. It's a company that's founded by Argo creators. And I worked with Paul to implement the solution. So I let him introduce himself. I'm Paul Phipps. I'm on the platform engineering team at master class. And yeah, excited to share some of the lessons we learned implementing this project with Acuity. All right. And so as you can guess, Paul did all the hard work. He figured out how to use Argo CD to implement the preview apps in the master class. And so my job here is to give you the basics. Some things we need to understand before we deep dive into implementation details. And so the reason I even have to give this kind of context is Argo CD itself do not have feature called preview apps. But it's very flexible. And it consists of lots of building blocks that you can use as well in your organization to implement preview apps use case. And so I want to talk about the building blocks and then more about the use case itself. And then Paul will take over and talk about the implementation details. And so the first building block that we need to understand is Argo CD application. And so I want to highlight a few important parts about application. So first of all, application is a custom resource stored in Kubernetes itself, usually in Argo CD namespace. And it's a configuration setting that explains Argo CD where to get manifests and where to deploy those manifests. So if you see this YAML snippet on the screen, that's Argo CD application. It has very few fields that you must provide. One is name and two parts, which is source and destination. And source is just a folder in the Git repository. Destination is a namespace in a cluster. So it's very simple. And if you ever went through Argo CD getting started guide, you know that it suggests you to use a user interface to create an application. So literally click the new application button, fill in those details, and application is there. It's available. You can deploy manifests, deploy Kubernetes resources. But I described it to highlight that even though it's simple, we do not recommend to do it this way in production. And the reason is even in the simplest possible scenario, you are going to have more than one Argo CD application. And the spec might be a bit more complex than just source and destination. So on this slide, I have the simplest possible real life scenario I could come up with.  So in this case QA stage and production and even couple production clusters. So that's already a bit more complex than four applications and so that one application. So if you are still not convinced, here are more use cases. One of them environments, we just talked about it. So add-ons in a cluster. This is a very popular scenario for platform administrators. So people use a lot of Argo CD to deliver core components into all the clusters across the organization. So and in this case, you need to create maybe hundreds of applications. They all look the same, almost, but there is a lot of them. And preview environments, that's important use case especially for this talk. So let's say you want to see your application in action before code is merged into the source repo. So Argo CD can help you there as well. It can help you to orchestrate provisioning of your application with the image built from the code which is not yet merged and Paul will describe it in details very soon. And so last kind of bit, if I still have not convinced you, here's just more details about those three top use cases. So even environments are usually more complex than it sounds and it depends on the config management tool that you are using. So and I guess one example, if you're using Helm, you need to explain to Argo CD how exactly manifest should be rendered. And at least you need to provide environment specific value file. Yeah, and cluster add-ons, it's a whole big story. It deserves a second talk, but you basically usually you want to create a set of applications for each cluster where set is inferred from a Git repo based on a list of files or directories in that Git repo. And preview environments is highly opinionated. It basically there you need to get list of pull requests from your Git provider. And so hopefully I did a good job convinced you that a solution is required to automate application management. And so here's one, here's one solution that existed in Argo CD from day one from the moment of its creation. So and it's called app of apps. And I'm going to kind of briefly describe it and hopefully you know what that means, but app of apps just refers to a pattern. It's not a feature of Argo CD. And if you remember on the first slide, I mentioned that Argo CD application is a custom resource, which means Argo CD itself is a perfect tool to deliver that custom Kubernetes resource into the cluster. And this is basically it was pattern was born in a community. So our users figure out they can create, they can create a Git repository, store YAML files with application manifests in that Git repository, then use Argo CD to deliver those applications into Argo CD namespace. And the next step is they figured it's possible to use templating and save a little bit of manual work. And so you can use for example, Helm to template ties your Argo CD spec. And just get list of applications from the value.yaml file. And it works perfectly fine. Actually, it's been used in production by many organizations for like years, but there are kind of caveats. It's still not perfect. So now we are getting close to kind of, to the final solution. Oh, the caveats are basically, you still have to maintain the source of true manually. So you need to maintain list of your applications and properties of those applications in a value file. And if you want to do it dynamic, it's just not possible because the data that you need to actually get list of your applications is stored somewhere else. So if you are managing environments, you, the source of true of your environments is a list of customized bases in your Git repository. So let's say you have a single app, you have QA, broad and staging environments, and you most likely have a separate folder with customization settings in your Git repo. And this is enough to create list of applications, but you are forced to update values file accordingly to let her know about it. And add-ons and preview environments are even more complex cases because you literally need to get data from different sources. You need to get a list of pull requests, metadata of which pull request. You need to get a list of all the clusters that connected to Argo CD, and there is no way you can package all of those capabilities into generic config management tool. And that's why we come up with, I think we think better solution, application set. And I want to describe what the application set is, and then Paul will explain how to use it to organize preview apps generation. So application set is a custom resource and its sole purpose is to automate management of Argo CD applications. And first it has overlap with Helm, it provides templating. So you can define template of application spec and just reuse it for the data that's pulled from somewhere else. And so the next most important feature is capability to pull that data. And to make it hopefully more easier to understand, here is application set that produces a single application for each and every cluster configured in Argo CD. And so hopefully, okay, you cannot see my mouse, but the property called generators is the source of the dynamic data. And in the generators definition, you can provide various sources. In this case, it's just the clusters. So it's a fairly simple application set. It iterates for all the clusters in Argo CD and produces a set of applications. And every time there is a new cluster, it reruns again and produces a new set of applications. Okay, that's all the theoretical knowledge we need to know, now it's time for Paul to describe it. Thank you, Alex. So that was a great foundation, but let's talk first, why preview apps? There can be significant differences between our local dev environments and production environments, and our goal was to mimic production as closely as possible in order to reduce risk. We use our preview apps for both feature validation and performance testing in order to accomplish that. Another issue is that feedback collection can be difficult without preview apps. There can be hardware, network, and security issues with sharing your local dev remotely. Our preview apps were meant to allow for easy remote collaboration between team members. And finally, the local development experience is becoming increasingly difficult for us to support as we add new applications and services. While we haven't completely broken down our monolith, we built our preview apps to be able to scale with the new applications and services we're building. Let's start with how we're using app sets. Having an application monorepo made it an easy decision to use a single app set for all of our applications. Multiple pull request generators could be implemented to accomplish this if you have multiple app repos, or you could also use multiple app sets. But it can be difficult to accomplish messaging back into the pull requests from the app set as the context of which generator triggered the preview app requests isn't shared downstream. Pull request generator also doesn't currently support path filtering based on paths in your application repo. To solve this, we found the best solution was using pull request labels and using a CI process to add a PR label to our pull requests when specific application directories are changed. We also implemented a matrix generator so that we could add the cluster generator here. That was to simplify migrating the apps to a new cluster whenever we needed to make a cluster replacement. The pull request generator provides multiple template values that provide context from the pull request that can be provided to the application. Here's an example here. Here we're using customize. You could probably also use helm. We didn't explore that use case since we're already using customize for all of our applications. We provide the application or we provide all of the generated resources, a name suffix with the pull request number, some common annotations and multiple app images enriched with the short shot. We also specify a namespace in our destination section with the PR number so that all generated resources will be launched in that namespace. From there, we needed to get all of that context into each application in a useful way. To do this, we used customize multibase to reference resources in each application directory in our GitOps monorepo. We also referenced some special tasks to provision our data sources and seed them with mock data in some cases and we have some third party integrations that need to be configured. One of the biggest challenges we faced initially was getting the pull request context deeper into the app configuration, including being able to configure ingresses, deployments and jobs. The solution we found with acuity support was customize replacements. With replacements, we're able to source the value of a common annotation and a resource and replace a target value with it. In the example here, we use a delimiter to prepend a subdomain on an existing root domain and another example where we replace the name of the namespace that's created. It might be a little bit easier to see them at work here. We're using a delimiter replacement in three cases here to create host names and a full value replacement in the case of the target service for this ingress definition. We use replacements in many places through our preview apps and even use them to set application environment variables that require context from the pull request. Another RGO CD function that we make significant use of is sync waves. We use negative numbering to ensure that if newly added resources are added without a defined wave, they will be in the final wave. We initially provision the essentials for our apps, including running, including our namespace, secrets, RBAC, and data infrastructure. We also provision the essentials for our applications to run, including mocking data, and then we run more routine jobs that include new migrations or refreshing our experimentation cache. And finally, we have deployments, services, and ingresses that are provisioned. We had some tough decisions to make when it came to our data infrastructure. I'm still second guessing our approach. Crossplane is great for provisioning cloud resources. These are similar resources to what we use on prod and it supports multiple use cases. The issues we've seen are slow provisioning time, occasional cloud provider API rate limits, and higher costs than alternatives. The next option we considered was using centralized shared cloud resources and using namespacing to differentiate between applications. This provided the same cloud resources we're using in production with better performance and far less provisioning time. The issue is that some data stores don't support the concept of namespacing at the framework level and managing the lifecycle of that data adds complexity. Finally, we considered deploying our own resources as that would be the least expensive and provide fast provisioning times. There was a higher risk of seeing differences in performance from production and configuration of each platform would have to be maintained. In the end, we went with crossplane for some use cases and shared cloud resources for the use cases that supported that option. If I were to go back and change something here, I would likely self-deploy some of our resources rather than using crossplane. An issue we discovered along the way is that crossplane will report healthy to Argo CD as soon as the API provisioning requests to the cloud provider is successful. This meant that our sync wave would move on to the next wave before our info was ready and our jobs would start to fill. Alexander helped point us in the right direction with custom health checks to resolve this issue. We also had a decision to make when it came to secrets. External secrets operator is great as it integrates with the top secrets management tools and automatically refreshes secrets when there are changes. For preview apps, it's less of a good fit as it requires a one-to-one relationship with the object and the secrets manager. And after multiple rounds of testing, we found that in every scenario we tried to decouple that behavior, changes to our local secrets would be overwritten by the operator eventually. So we ended up using external secrets operator to sync a secrets template to a unique namespace and then created a job with the RBAC needed to copy the secrets values into our preview app namespace. This solution gave us the benefit of devs being able to update the templates with tools they're familiar with. And every preview app created after those updates will pull the latest values. And just to show how simple some of these jobs can be, we just created a shell script with some kubectl commands to copy our secrets and you can use the Alpine Kubernetes image to run it. We looked into two different options for building images. Building NCI would give us parity with production. However, this option, the build context isn't available in Argo CD. The other option was to build the image in the cluster. This would provide the context in Argo CD. However, a failed build could be retried continuously if you're using self-healing and it would be difficult to provide the same visibility into build errors as a robust CI system. We decided to use CI to build images and quickly found an issue when the sync wave is unaware of a build failure. Migration jobs would end up in error image pullbackoff and the sync would not fail. What's worse is that when devs would push a fix and their build would succeed, the app set would not sync those new changes as it was waiting for the previous sync wave to complete. There is no time out for a sync so they will run until manually interrupted even if the app is marked for deletion. This led us to our current design which where we added in a NIC container to any jobs that require an image we're building. The job will continuously be retried through self-healing. However, that process is very lightweight and very inexpensive to run. We implemented jobs in two different ways. Jobs that run only once for tasks such as mocking data and jobs that run on each sync for tasks such as migrations. We used the sync options annotation to set replace to true for jobs that should run on each sync. We found a big issue with one-time jobs when we were initially making changes to common annotations in the app set. Since the new annotations would be applied to a job that's already successfully run, they end up in an out of sync state. This also meant we couldn't use any app set templates in common annotations that would change such as commit shaws. We made sure to avoid that situation early on but the only way we found to resolve it when we hit the issue was wiping our data sources for all of our preview apps and rerunning those jobs. Never an ideal scenario. We also found there was no option for a deletion hook but we'll get into life cycle management a bit later. We found the easiest way to set up networking between our apps in our preview app namespace was to use customized replacements to set Mvars in our deployments. We also want to expose these apps so their teams can collaborate together with limited friction. External DNS creates a public DNS entry that is continuously updated with a cloud load balancer endpoint if it changes. We also expose the app status and critical information back to developers through updates to the pull requests through Argo CD notifications controller. Here's an example of some of our notifications templates. Here's what the top one is where we're adding a pull request comment through a webhook. We use quite a few template values here so that we can use all of our pull request data that we need to ensure the comment ends up in the right PR. We also craft unique URLs for multiple services that simplify access to the preview app including giving access to the app dashboard in Argo CD and the app logs. When the collaboration and PR reviews are done and our work is merged or the pull request has gone still, we need to tear everything down. We currently use cron jobs to accomplish all of our lifecycle management. One area we may consider in the future to keep our solution more native to the app set would be finalizers. This would require creating a controller to identify specific resources that have been finalized and then complete the deprovisioning tasks before deleting those resources. We don't have much incentive to pursue this path currently since cron jobs are sufficient but future needs may make this path more appealing. We also use other services in our implementation. I won't go into any detail on these but if you have questions I'll be happy to chat with you after the talk. Now for the results. Was this a valuable effort and how has it impacted our team? So far we've served over 1.8 million requests and our metrics show that over half of the apps we generate are used by our team for testing and validation. We've received very positive feedback from our devs and have only spent a few hours maintaining these over the past six months. I sourced some comments from our developers this past week and here's a short summary from their feedback. As you can see our developers have found preview apps to be an essential and time saving part of their workflow. They helped de-risk big changes since synthetic testing and PR reviews can start early in a production like environment and visibility into issues can be easily accessed from the pull request. Our primary primary complaint is the build time. Since we build on each commit we're currently working with our teams to improve those build times and looking into hot reloading as an option to consider. Let me see if I can get a demo to work. Gonna do an actual demo of the product. So here's our homepage. I think we can make some improvements. I spun up this PR this morning. Get my comment, my preview app is ready. Can also double check. Let's go see if this loads. Learn from the best at ArgoCon. I think that's a big improvement. We have about a minute and a half for any Q and A. The mic up at the middle there if anybody's interested. So how did you guys deal with data parity? You wanted to say you wanted to keep production like data all the way down to your preview apps. We've had some problems with data sanitization being able to keep the database up to date and then with Rails migrations that adds another complexity aspect to it. So I was wondering if you guys used a tool to sanitize the data or you just seeded a blank database? We already maintain those kinds of scripts where we run a sync from our database and truncate it and anonymize it every night. So we already were doing that for local dev. So we just use the same sync for these apps.  We have a single cluster with multiple and each unique namespace is named by the PR, so the PR number. Okay, cool, thank you. We have time for one more question, one quick one, please. Yeah, quickly, are you using the PR preview for like cluster add-ons like cert manager or anything like that? Can you repeat that? Yeah, are you using the PR generator for like cluster add-ons like controllers or anything like that? We aren't using it for anything, any of our microservices, we're only using it for applications right now. Okay, and have you had any problems with, I'll stop, I said one. Thank you. I'm happy to chat with you after. Yeah, they'll be happy to chat in the hallway.


What is up everybody welcome to week four of the NFL season and the Fando hurry up I am Brandon Godulla. I'm the managing editor at number fire calm And I'm going to be breaking down my three favorite stacks for the week four main slate The stack I'm going to start with is a pretty obvious one, but that's okay There are always other leverage opportunities on a full slate But it's going to be Patrick Mahomes and Tyreek Hill for the chiefs. We've seen good outings from Mahomes this season He has at least twenty four point nine Fando points in all three games, but Tyreek Hill has had two straight down weeks That's not all just variants. He's had just 11 targets for 70 yards Just one downfield target since week two But the chiefs are at one and two on the season. They need to win this week. Hill cannot be limited forever While the Eagles do right out well against the deep ball They've faced no competition quite like this and Dallas beat them early and often in week three So I'm in on the stack which unsurprisingly has the best 90th percentile score in my simulations and even accounting for salary They are second my second stack of the week takes me to a first time around divisional matchup between the Seattle Seahawks and the San Francisco 49ers the total is 50 points according to Fando Sportsbook and It's always easy to sell us on Russell Wilson. He's been quite efficient. This this this season so far I'd love to see a little bit more rushing than what he's been giving us But he also has inherent added value as a stack candidate because we know where the ball is going DK Metcalf and Tyler Lockett account for 56 percent of Seattle's targets and 80 percent of their areas right now That's what you need when trying to hit stacks Metcalf hasn't flashed as much as Lockett But actually has a better overall role based on the underlying data He's got a 30 percent target share Wilson's under salaried here. So I'll gladly go back to the Seattle offense for a Fandall stack for week four And then I'm going back to that chiefs game on the other side of the ball with Jalen Hertz and Devontae Smith While Smith's salary remains under 6,000 Smith's just one of six receivers in the NFL to have run at least 90% of his team's routes and healthy games while maintaining At least a 20 percent target share a 40 percent area share and at least two downfield targets per game That combination of volume and leverage can lead to a big outing when it all clicks and they're playing at home Which is generally when we see these high a dot receivers pay off As for Hertz he is playing to the opponent expectation So far in terms of efficiency But he's also averaging just shy of nine carries and 60 rushing yards per game That adds a ton of value to his salary of 7900 Against the chiefs he should be running plenty when he's dropping back Scrambling making a lot of plays and that's going to flow primarily through Devontae Smith That'll do it for my favorite NFL stacks best of luck in week four Let's double dip on those touchdown passes on Sunday


Autosave in Moodle 2.8 If you use the Atto Editor for creating and editing text in Moodle 2.8, your content will be automatically saved at regular intervals. The default is every minute, but the administrator can change this in the Atto HTML editor settings. This new feature means your work is secure if you accidentally lose your page. Here's a student typing a forum post, and as she types text into the box, you can see at the bottom left a message appears, draft saved, and as she continues to type, or pauses for thought, the message will reappear reassuring her that the content is preserved. So what happens if she accidentally loses the page or loses the connection? When our student returns to the forum post, the content is still available, and there's a message that a draft version of this text was automatically restored, so our student can continue with her post.


Okay, good. So now I've said all these things and I want to talk a little bit about what governments are actually asking for because I think it's a little bit complicated and I don't think even governments fully understand what what they're requesting. So let's let's be clear when it comes to messaging and I'm going to keep this entire talk on the subject of messaging. When it comes to messaging what they're looking for obviously their preference is the best kind of encrypted messaging service is one that doesn't exist one where the messages are not encrypted. They're sent in plain text and they're retained in long term stores at providers so a warrant police can show up and say give me all the messages sent between these people. And the problem is solved. That seems to be a very, very strong desire, or at least if we don't have no encryption we can slow down the deployment of new encryption. Failing that there is a strong push to develop what are called key escrow systems and of course, this is a very technical group of people I think but just to be clear what's defined this. It means that every time we send a message we're going to have some master encryption key, which could be held by the government although the US does not seem interested in holding keys, but more likely held by the provider or in a company like Facebook or Apple, and that master key will decrypt on demand, whatever message needs to be decrypted. And that seems to be the general push. I just want to stress here. How scary that requirement is right so if I have a master key sitting somewhere that can decrypt criminals messages, then there's nothing technically to prevent that same master key from decrypting everybody's messages. So if that key is stolen. Everything is clear text to the person who does steal it. This is a very, very strong requirement. The more interesting current request that is actually getting a lot of traction I think unfortunately in the United States is actually kind of a very hard shift so governments have mostly been asking for the ability to what they call, get exceptional access gain access to messages when they have a warrant, which in the exceptional means, not this is not the normal case we don't want to read your messages every day.  However, very recently, an entire group of governments, particularly here in the US, the Attorney General signed on to a new requirement that comes kind of out of nowhere for us and it basically demands that we have real time content scanning. Another example of real time content scanning is that we can look at every single message that you send through the system. And we can check it for certain properties and the most common property that's mentioned in the US is, is this an example of what we call CSAM or child sexual abuse media. This is a very powerful request because none of us I mean I have kids, none of us wants this to exist. None of us likes the idea that this kind of media is flowing through systems. And of course the idea that end to an encryption to facilitate the transmission of this kind of media is horrifying and it brings out an emotional reaction and everybody. From a real point of view, it's really important to understand the difference in the requirement in the ask what governments are asking for between asking for exceptional access and asking for real time content scanning. The first is an exceptional capability that is not used except in an occasional, you know, very serious legal instances, when a court has granted a warrant. Real time content scanning is a ubiquitous workflow, every single message is being checked, maybe not every message is being flagged if the system works well, but every message is being scanned and from a technical point of view that's a very very big difference. There are some governments who I think are being a little bit more reasonable in the sense they're asking for more targeted wire tapping and eavesdropping the UK has made a proposal for that so that's a little bit more reasonable. And we'll come back to that in a second. One of those is called the ghost users proposal which gchq in the UK came out with. And of course I mentioned previously traceability this is kind of the new one for me. Very hard, and we'll talk about, well, potentially hard and we'll talk about why that is. I think that's on the time on kiosk grow because I think most of you really kind of do understand this but I want to present it from the government's point of view which is kind of this is what the governments want they don't care about kiosk grow they don't care about key storage or any of the details. They basically have been demanding at least in the US that companies should be able to produce plain text on demand. In the 1990s, when Clipper was the proposal, that system was actually very, very carefully developed so that US agencies US government agencies would hold keys the master keys. There would be a process to split the keys across multiple agencies, and everything was done centrally by the government with certain protections in place. Various proposals that have been made recently do not include that protection, they basically say, hey, you figured out industry go off and figure it out, which means of course, you can imagine Apple which is very well funded could probably build something more reasonable. But you can imagine there are a lot of other companies very small companies that are going to be figuring this out from scratch. We're going to do it very poorly. And so this is not necessarily an easy ask. So, you know, obviously some of those companies will say, well, we just can't afford to do encryption at all if this is the requirement that's a very likely outcome. But generally speaking what it means is that somehow they're going to have to encrypt session keys for messaging using some kind of escrow key that he's going to be stored somewhere typically on a messaging providers hardware security module. And we're not really sure how they're going to do that that's a very, very hard thing to do. This is a hard thing to do because the US government tried to do it once and the result was the clipper chip, and it was broken not necessarily in its key escrow function, but it failed its design which was created by the US National Security Agency, had a field with a 16 bit message authentication code and Matt Blaze at Bell Labs was able to figure out that he could bypass the encryption the key escrow function on this chip relatively easily. So maybe as a result of that design failure support for this kind of government design key escrow collapse now this is the US National Security Agency, whatever you may think about them, they're supposed to be good at designing encryption technology. So the fact that they failed on that aspect of the clipper chip was a good indication that maybe this is not such an easy problem to solve to key escrow, and the US is not very easy to do. If we had done it, you know would have really been very bad for software security and so on. We also had a really interesting example of how bad key escrow could go wrong, even if you protect the master keys. I like to cite this to government officials at least here in the US because none of them have heard of this. But many of you or some of you may have heard that in the 2000s this came out during the Snowden slides. The US government created what we believe to be a backdoor pseudo random number generator was called dual EC DRBG. And there's a long story I'm trying to cover very quickly, but we believe that this, this algorithm had a covert backdoor that was put out in this standards. And for reasons we still don't fully understand this algorithm wound up inside of juniper net screen firewalls in about 2008. And they continued continued to be there through about 2012, and actually 2015 and so on. In 2015, a group of non US hackers we believe, possibly the current rumor is possibly Chinese state sponsored hackers were able to get into juniper's net screen code base. And what they did was really alarming. What they did is they took this possibly backdoor algorithm. And they replaced a single 32 bite field with a key that they had generated themselves. We don't know how they generated but clearly they did this for a reason. And what we know about that in fact we did some of the research just to verify this. What we know is that this creates an opportunity for anyone who has the corresponding secret key. In other words the hackers themselves to decrypt any VPN connection that was made by these firewalls. And so essentially they took our backdoor and by our being very specific the possible the NSA is highly likely backdoor, and they turned it into their own backdoor. And I think this illustrates kind of the risk you know there are so many risks around kiesco systems and duly CDRB G is one. It's an example of how dangerous they are you cannot hold these systems against very sophisticated state sponsored attackers and this kind of shows us one of the possible outcomes. I don't want to praise other backdoor approaches but in a few years ago GC HQ in the UK came up with their own approach and I'm not in love with this but at least it gives you an idea of what's possible. There was an alternative approach to creating some kind of backdoor into messaging systems, and what they identified is really valuable. They pointed out that most messaging systems have a server. And that server's job is to, when I want to talk to Bob, I go to the server and I say give me Bob's public key. And this is called the identity subsystem really its job is to hold on to who's part of the system, as well as their public encryption keys and give them to me when I need it. And all of the systems that we're familiar with have a server like this Apple iMessage WhatsApp signal they all centralized the server to distribute public keys.  The systems have some kind of key fingerprints you can verify that but nobody does the idea that GC HQ proposed is well here's the weak point in all these systems let's attack the weak point. And what they want to do is they want to subvert that identity management system they want to subvert that server to insert either wrong keys or add new users. So when I try to make a private conversation to Bob it's not just me and Bob, it's me and Bob and maybe the FBI. And this seems very simple of course then the question is why doesn't my app tell me that the FBI is present, but of course, the problem is that you know that they're also proposing that we change the app. So it doesn't reveal facts about who's part of the meeting. I'm not doing that pretty much anything's possible, but I will give GC HQ credit, at least in this case, what they've identified is at least a system that does not have the same vulnerability as the key escrow approach. If you steal the keys from GC HQ, you won't be able to decrypt anyone's message, you'll have to actively target a particular user and that's not always so trivial. So this is at least slightly lighter approach, even if I think it's unworkable. I want to briefly talk about tracing and I think what's kind of notable about this part in this idea of tracing different people's people's text forwards or attachment forwards. What's really notable about the problems and tracing is that it's just a problem we don't quite know how to solve. There is an article that talks about a government Indian government proposal to do some kind of hash based tracing and I think the idea is basically if somebody's forwarding and attachment and it goes becomes very very popular. We can find out who started this or we can go back and see the pack by which it arrived at being viral. The government in India has proposed some kind of hash based tracing. I've seen some research that proposes other ways to do this. It's possible that WhatsApp already has some way to track forwards. It's a little bit difficult to tell. But it's not necessarily the case that we know how to do this because the situation is sort of fluid. Some people have proposed tracing approaches that are privacy preserving in that you can only trace messages if they achieve large scale virality. But the problem is we don't know what a message is just starting out if an attachment is sent out from one person and it reaches 10 people and then it goes to 100 people and it goes to a million people. At what point does it become traceable is it always traceable from the point where I send it to my 10 friends. Or is it traceable at the point where it reaches a million and then somehow when it reaches a million people, can we go back in time and identify who sent the original one to 10 etc viral push. And so these problems. I'm not saying these problems can't be solved. I'm saying we need a lot of research to really figure out what is being asked for if we don't want to just build a system that traces everybody's messages everywhere. And this is kind of an example I think of what governments are asking for. I'm enthusiastic about solving problems. I'm uncomfortable with the idea that governments are saying we need a system today, when we researchers don't even know how to build that system.


Hi, I'm Zor. Welcome to Unisor Education. This lecture is the last theoretical lecture about Apollonius problems. It's basically titled Lines and Circles. It's presented on the website Unisor.com, this one. I suggest you to view this lecture, to watch this lecture from this website because it contains nice notes, as well as just the general functionality of educational process, which includes exams, enrolling, etc. So, as I was saying, this is the last theoretical lecture on Apollonius problems. And before actually going into Lines and Circles, I would like to make a few comments about certain kind of obvious aspects of transformation, which we are talking about. So, inversion. That's the main tool of all these problems encompassed by the name Apollonius. So, this inversion, as I was presenting it, I was presenting it in a relatively straightforward fashion. For instance, this is an inversion circle, the center. And let's say if you have a line here, then you have to draw the perpendicular, draw the image of that point inside, and the image of that line will be a circle, which has this segment as a diameter from a center to a point, which is an image of this point. Now, I did not really go into more complex situations like this, for instance. So, instead of this line, which is completely outside of the circle, what if the line intersects it? What happens in this case? Well, I didn't really touch it because it's really very simple thing. I think it's exactly the same. And as I was saying, the situation is exactly the same. You take this point, you reflect it relative to this inversion circle, and in this case it will be point outside. And again, you construct a circle using this as a diameter, exactly the same type of thing. So, the image of the line is still a circle, and the line intersects the inversion circle. It's just the circle which would be partially in, partially out, as well as this line is partially in, partially out. Now, similarly, if you have a circle which is partially in and partially outside, so this is inversion circle, and you have circle like this, for instance, what's the image? Well, before we were talking about the image of a circle as a circle, we proved it. Well, in this case, again, without the proof, just you have to do exactly the same thing. Have a diameter. Have these two points inverted. So, this one goes into, let's say, this, and this one goes into, let's say, this. Now, these two points which are on the inversion itself, on the inversion circle itself, should stay. And the resulting circle would be this, the image. So, again, a circle goes into a circle without any problems. And what else? Well, if you have two lines, if you have two lines, any lines intersecting each other at one particular point, their image, whatever their image is, would also intersect but the point would be inside. So, if this point belongs to this line, the image of this point belongs to the image of this line, which is way to this, and the image of this line would be something like this. And again, the point would be the same. Intersection would be in one point. Therefore, if you, let's say, have a tangent to a circle, this is an inversion circle. You have a circle and a tangent. So, the circle will be transformed into a circle, in this case, inside. This tangent would be transformed into a circle which goes through the center of the inversion. But my point is there is one common point, the tangential, the point of tangency. So, this circle, whatever it is, would be tangential to this circle. So, this tangential point and this tangential point, they are inversed against each other. Because there is only one intersection. If there is one intersection, it cannot turn into no intersection or two intersections. Obviously, it will be one intersection point among images. And if there is no intersection, there will be no intersection. And here is an interesting example which actually is quite educational as far as what inversion actually is. If you have two parallel lines, well, again, lines do not have anything in common, right? No common points. They are parallel. Which means their image is supposed to be parallel, right? So, the image of this line would be... So, we have to draw it perpendicular. The image of this point would be this. The image of that point would be somewhere here, right? So, this line would transform into this circle which goes through a center of the inversion. And this line will go also to a circle which goes through a center. So, what is it? Is it a common point? No, because if you remember, in the very beginning of explaining what actually inversion is, I said that all outside is converted into the inside except the center. Center is not converted into anything. It's not participating, actually, in the transformation. So, that's why you can say that there is no such point, actually. There is no intersection here. There is no common point, because this is a center and center is completely outside of all the transformations. So, outside, if you just take out this particular point from the inversion circle, there are no intersections between these two images of these two parallel lines. Because there is only one intersection in the center and the center is not part of the picture. There is no such point, actually, if you wish, in this transformation and inversion. So, we still preserve the notion of no intersection, no common points among these parallel lines and there is no common points among its inverted images. Okay, after this preamble, it's time to go to, again, relatively routine lines and circles problems. So, I have... Well, all lines were considered in the first lecture when it's basically a triangle, right? So, you have to inscribe or circumscribe around the triangle. Now, as far as two lines in the circle. Okay, two lines in the circle. I will consider only one particular case. All other cases are similar. Now, the circle is somewhere here. So, we need a circle which would be tangential to all three of them. Okay, how can we accomplish this? Well, if you remember, if, instead of a circle, I have a point it should go through, then I can use this point as a center of inversion, have some kind of a big circle and these two lines would be inverted into circles and this, since it goes through a center, the one which we need to construct would be a line and the line would be tangential to two images of these two lines, which is two circles. So, basically, you would have a circle and a circle and you have to draw a common tangential line which is easy to know how to do that. Now, here, instead of a point, we have a circle but there is a very simple technique which you can actually transform this problem into the problem when the point actually is given. Here is the point. Let's say this is R1, this is R2. What if I will increase the radius R1 by the value of R2? Then it will go through this. It's a concentric circle. Right? Now, this new circle, the bigger one, R1 plus R2, will go through the center of this which is given. Now, what's the difference if I will draw the perpendicular here? That would also be R2, right? And this would be R2. So, if I will shift this line down by R2 and this line this direction by R2 and R2 is known, what do I have? I have a point and two lines and I can now know how to draw a circle which is tangential to two lines and goes through this point, right? That's one of the previous problems. It's a point, line, and line. We know how to do that. And once I've done that, I know the center. And if I know the center, obviously I know the radius because I will subtract from this R2 and draw a new circle which is radius, whatever the radius is. And incidentally, if you have two lines and a point, this problem, how to draw a circle which is passing through this point and tangential? Well, if you remember, we just draw an angle bisector, pick any point, have a circle which is tangential to these two lines by dropping two perpendicular and then we just stretched it. So this point is stretched to this one then the radius will stretch to this one. So basically, it's a proportional thing, right? So you know this, you know this, and you know this, and that's why you can know this. This is the proportionality between these two similar triangles. This and this. Okay. So that's two lines and a circle. Okay, what if you have two circles and one line? So you have a circle which is supposed to be tangential to two circles and a line. Okay. What can we do here? Well, what actually we can do is very similar to the one to the transformation we did before. Let's say the smaller is R1. This is R2 and this is R3. So I will increase the radius of this unknown circle by the smaller one, R1. Now it passes through the center. Now this, it's tangential to the circle of the radius R2 minus R1, right? And this will be tangential to this line which is on the distance R1 and this is R1. So we have reduced our problem to a slightly simpler one. But you have a line, a point, and a circle. Point, line, circle. So you have line, point, and circle. And you have to draw a circle which is this. Now here obviously since we know the point we can use the inversion with the center here. So what we'll do is this is my inversion circle with this center. Now this is supposed to be a straight line, right? This is supposed to be some kind of a circle. And the circle also supposed to be some kind of a circle. So right now the problem after the inversion has been reduced to drawing, constructing a tangent to two given circles. One is image of this line. Well, actually I was wrong. This is not a circle. Since this is a line the image would be not just a circle but a circle which goes through this point. So it doesn't really matter. I mean it's still a circle. But that would be something like this. So this circle is image of this. This circle is image of this line. And this circle would be transforming to this tangent which we have to construct. So again, tangent to two circles. And we know how to do that. Line and two circles. So line and two circles we have reduced to line, circle, and point by reducing the radius. And then use the inversion to solve the problem of line, point, and circle. Now the last one which we did not touch yet that's three circles. Now as I was given this problem construct a circle which is tangential to three given circles. That was actually given me as a true Apollonius problem. I mean all others are kind of derived but this is a regional Apollonius problem. Construct a circle tangential to three given. So what can we do in this particular case? Well actually we can do very simple thing. Again let's take the smallest radius which is this one r1, r2, r3. And we will reduce everything by r1. So this would be point. This would be a circle of the radius r2 minus r1. Right? This is r1. And here also would be this, this is r1, would be a circle r3 minus r1. Now, so what we have now is we have to construct a circle which is passing through this point and tangential to two circles. This, this, and this is the point. So this is a point circle-circle problem which we have considered in the previous lecture when we were talking about points and circles. Again, you just use this point in the center of inversion and these two circles would be converted into, transformed into circles and the circle which we need would be their tangential, tangential line. So basically that's it. That's the solution. So with inversion it seems like very easy. As long as you know how to invert a point to a point, a line to a circle and the circle to a circle, if you know that how to do it and it's very simple actually. Then basically that's it. All problems are resolved. Now the last problem which is kind of a combination we touched before. If you have a point, a line and a circle we already touched it in the previous problem. We have reduced the two lines in this circle. Not two circles in a line. Two circles in a line we have reduced to this one. Alright, so as long as you have a point the easiest way is just to draw a circle around this point as a center and invert everything relative to this circle. So these are all different problems combined together under a general name Apollonius problems. It's constructing a circle which is tangential to three elements and three elements can be anything, points, lines and circles. One more important issue you know these solutions whichever I was suggesting to you I suggested just one solution but in probably almost every case there are more than one solution so if you are really like scientifically approach all these problems you really have to specify what kind of solutions really exist and let me just as an example talk about the last one. So if you have a circle which supposed to be tangential to three given circles how many solutions this problem has? Well, this is one, now this is another right? This is the third one. There are many many circles using the combinatorics we can actually calculate because each circle can be tangential either inside or outside right? This is outside tangency and this is inside tangency so basically I think we have eight different solutions here, two for this, two for this two for this because each one of these three given circles can be either inside or outside touching the circle which we need so eight different solutions and how can we obtain this? So let me just tell it on this particular example if you use first you have to reduce the problem to the problem of two circles at the point by reducing all radiuses to the radius of the smaller one right? So now this is the center so you draw an inversion circle this would be a line, this circle this circle would be another circle now we have two solutions two different tangential lines which are tangential to this one at the same time you can use actually different types of different types of center you can use instead of this center you have three different versions and in all these three different versions the situation would be different obviously and you will have different pictures different circles and different tangents so that's why you have certain freedom of choice and whenever you're exhaust all these variations that would be basically the result of everything so like for instance we are looking for let me just give you an example if you have again this and you have to this get this solution what happens? Now in this case in this case what should you do? well you reduce your radius that would be something like this this and the point so it would be tangential here here and here that's what you're looking for now if you will use this as a center this as a center then this would be circle this would be another circle and you have two solutions here one solution and two solutions one would correspond this circle and another would correspond to this circle right? so basically again all different variations are possible and if you again if you would like to really make a complete solution you really have to think about all the different variations of this problem but to tell the truth the most important I would say interesting part is just to solve it in at least one case like the case when everything is outside I mean that's kind of appealing to my eye and basically everything else follows so you don't really have to struggle with this too much what's important is that there is a very important there is a very powerful tool inversion this is a tool and you have to really master this tool you have to understand how it works and where it can be applied and well with another probably more philosophical side of this is if you will try to solve this problem without the apparatus of inversion it would be probably difficult I didn't think maybe enough for this but right now at the moment inversion is the only method which I know I mean probably there are some others but what's important is that in some cases whenever you are dealing with a difficult problem which you don't really know how to approach using known to you methods what's important is to go completely outside of the box and think about this problem from different perspective I mean somebody invented this particular transformation of inversion I don't even know who by the way but whoever did it it was really a perfect example of thinking outside of the box all these approaches which were used before like for instance you want to inscribe a circle into a triangle well you know how to do it it's angled by sectors etc now these are all classical approaches to construction problem using inversion basically inventing the inversion proving a few theorems that the lines would be converted into circles during this transformation or circles which goes through the center would go into line etc so all these it's a theory the whole apparatus which was built maybe for some other purposes but for this particular purposes of Apollonius problems that was very useful and that happens a lot in science, in theories etc in many cases when you just if you construct some, I know airplane engine with the propeller there is an engine definitely and it can be improved, improved, improved there is certain limit beyond which you cannot go and jets were invented as a completely new type of engine completely outside of the box and they actually made the whole flying significantly faster so you have to think about certain problems which have reached either their level of understanding level of capacity etc you have to think about them completely outside of the box and maybe you will come up with a completely new approach from completely different direction which would be great for this particular kind of thing so this is a perfect example inversion is a perfect example of such an approach in mathematics and whoever invented it is definitely a very talented person thanks very much and good luck


The Ministry of Health and Wellness has issued a bleak warning to St. Lucian's. Observe all control and prevention protocols for COVID-19, or St. Lucia may be set for a fourth wave of infection. The warning came as officials updated the nation via the Information Command Centre on NTN on the status of the in-country infection, transmission and recovery from the coronavirus. Chief Medical Officer Dr Sharon Belmar George explained that the risks for community spread include non-adherence of visitors to hotel protocols, reduced use and poor use of face masks in public places, increased mass crowd events across the island, non-adherence to establish protocols at business places, and the crowding of public buses without the use of face masks. The Chief Medical Officer noted that due to the non-compliance to protocols, the country may be heading towards another COVID-19 outbreak. Previously, we were managing with a rate of transmission of 1.1. We have gone up to 1.54 and we see the upward trend towards a fourth wave in country. We are at a very critical point and we want to ensure that everyone is aware of where we are and our actions at this point is really going to determine how we continue to manage. We can end up getting to a major outbreak as we are seeing happening in the rest of the world. The CMO further explained that the very communities in which majority of the protocols are being breached are the ones recording increased COVID-19 cases. Everyone must take personal responsibility and adhere to all COVID-19 protocols for the safety of the citizenry. There's been a general relaxation of the measures during the month of May. I think if we all take an honest look around what's happening on the ground within the communities, the social activities and there are specific areas which we have flagged and picked up the outbreak of our cases. There are certain services that are higher risk where we get more cases when there is one detected. So it is really important that we as a country do what is necessary. We take personal responsibility to ensure that we protect ourselves and our family. The Ministry of Health and Wellness noted that while a general decrease in COVID-19 cases has been observed over time, the possibility of an outbreak looks as members of the public continue to disregard the protocols.


It's the same thing you've been doing time and time and time before.   Welcome to the 200th week of Julian Assange Sidney Town Hall gatherings. We happen to have one of the world's greatest journalists, one of my favorite heroes of all time, Mr. Joe Lawyer, who is like John Peer Jewin, several other journalists. The greatest journalist about on this planet is Sidney. Come and say a couple of words, please, Joe. Just give us a couple of words, please. Can you hear me now? First, I have to pay tribute to the people here who have been doing this for 200 weeks. My arithmetic is bad, but that's about four years. What's happened those four years? Besides Julian being in jail, which is how this started, right? But the awareness of the case around the world has been extraordinarily different from four years ago. Heads of state all across Latin America. Members of this parliament, a parliament in Germany, Britain, one or two members of the U.S. Congress. And it's because of people like you who are here today because in many cities of the world there are rallies like this, trying to explain to a population that's walking by, getting to and from work, who you're, in this case, who your own citizen is, what he's done and what has been done to him. And what has he done? What has he done? Well, I am a journalist. I do not ascribe to the description that was given of me of being one of the world's greatest or being mentioned the same breath as John Pilger. Just go to Pilger's website, see how many films and books he's written. There's very few of us who could come close to his achievements. But he was a journalist and he still is. He's in jail for being that and nothing more, a publisher. It's often said here by politicians, amongst them the six that are in Washington right now, are hoping to get Julian out, that Chelsea Manning is free and Chelsea was the source. How could the journalist, the publisher, still be in jail? What's often forgotten is that Chelsea Manning signed a non-disclosure agreement with the US government. She was an employee of the US government. She actually broke a law. So no way she should have been treated the way she was. Imprisoned for that long and tortured but she broke a law. She decided on her own to break that law. I'm the editor of consortium news and the editor-in-chief with our founding editor, Robert Perry. He wrote in 2010 that he, and he was a great investigative journalist for Associated Press, that he would encourage his sources if they needed to break a law in order to reveal information that could prevent a larger crime from being committed. That's what a whistleblower does. That's what Chelsea Manning did. She went into that with her eyes wide open that she was committing a crime to give that material to Julian Sange. And yet, she's free. Julian Sange was never US citizen, never worked for the US government, never signed the non-disclosure agreement. What is he doing in jail in Britain? Because he upset very powerful people in Britain, in the United States, and even here in Australia, if you remember what Julie Gillard said about him, that he'd committed a crime. What I just said she was saying wasn't true. She said he'd committed a crime and wanted his passport, only the AFP had to tell her that she was full of it. He'd committed no crime. So if Chelsea Manning is free, someone who did commit a crime willingly, there's no reason Julian should be in jail, except they want to protect their own bottoms here, their own interests. This should outrage everyone on this street right now. If they understood what the case is, and again, thank you to everyone here for your two years of bringing that information to your public here in a very busy street in Sydney. So keep it up and thank you very much. Bye-bye. Joe Lawyer, folks. The editor-in-chief of Consortium News, possibly the leading publication on geopolitics in the world right now. If you don't know about Consortium News, you really are not being informed. You must check them out. Joe Lawyer, thank you so much, sir. Any day now, any day I shall be and Julian shall be relieved. We are now very privileged to have another great journalist who's also connected with that great publication, Consortium News. If you don't tune into Consortium News every day or two, you're really missing out on geopolitics and humanitarian issues, because nearly all the other organisations or a lot of the other organisations that are controlled by money are corrupt. But Consortium News is really one of the most trustworthy media outlets. Cathy Logan, journalist, and one of the editors of Consortium News is going to have a few words. Please make a welcome. Thank you, Cathy. A great person's work. I'm proud to be here with you. I recognise so many faces here. We have been here. Naughty Girl is here to put that on this channel, and we've got 28,000 views. We occupied DFAT in 2012. Jan, my friend from politics in the pub. Jan might have been there on the day as well. Maybe no, no. I think everybody was so brave, but Mark Wolburn, you have been coming to... We've all been going to protest. I started defending Julian Assange in 2010. It's been 13 years. He had a website called thing2thing.com. I was told he worked with Chinese dissidents, because WikiLeaks, in the very early days, the idea was to go after repressive regimes, China, Russia, Middle Eastern countries. Western countries were not on the list. That wasn't the original intention of WikiLeaks. You can read that on the krypton.org website today. The original emails of all the people who put this beautiful idea together to create transparency, to let people know about war crimes, corruption, the things that we really ought to know. And what I thought about WikiLeaks was that you've got to have accuracy in the historical record even. As a historian, it must be accurate, but also I understood that Julian Assange had a distinctly anti-war bent about him. And he said our number one enemy is ignorance. And in fact, most of the wars in the last 50 years have been started by media lies. And if we can do something about that, if we have a healthier media environment, we will have a safer world. Now, the Arab Spring came after that. This changed the world. People started understanding why their lives were miserable. We found out that these armies that were so powerful were just gunning down civilians for fun, for sport, like as if it was a video game. And I'm talking about collateral murder. I took that website and I started writing. I was a teacher. I didn't write. But I thought, and I was a filmmaker, I thought I can do something. I'll take that website and I maintained it for nine years. I don't post on it very much these days because over that period of being what we call then popularly a citizen journalist, I started going on to these vigils and reporting on Julian Assange issues. And that those vigils, you remember, they went up to 50 hours. They had 50 guests. Well, I was one of them. A guest who I met on the vigil. I met Gloria. He was interviewing me. Then I had to interview the next person. And well, what happened is that I turned into a journalist myself and I became a full-time journalist. And what I've been doing since 2019 is I've been in the courtroom, in the Assange courtroom every day. Gloria and I, Mary Kostakidis. You all know Mary Kostakidis. We have been in the Assange courtroom since the case management hearings, before the extradition hearings. We were in there all day, every day for one month in September 2020. We were in there in February 2020. We were lucky to escape before the pandemic hit. We got back to Australia just one day before the borders closed. I would have got back as I'm an Aussie when I brought Gloria back with me to keep him safe. I've got to be safer in Australia. Now what I have heard, what we have heard in the courtroom is a completely different story. We are hearing forensics. We are hearing a litany of witnesses that show exactly what Jennifer Robinson said in the Canberra press conference that the facts of the case show that no crime has been committed. Now there are politicians that want Julian to take a plea deal. Admit you're guilty to something just like poor old David Hicks had to do. Hats off to Stephen Kenny for getting that all overturned. He came back to Australia, a criminal. He hadn't committed any crime either. But that was the deal or John Howard, our Prime Minister at the time wouldn't bring him back to Australia. So he had to sign all of these documents. Yes, sir, yes, sir. And he said it was so hard to say that he had done things that he had not done. But Stephen Kenny wiped his slate clean. He became an innocent man again, a victim, another victim of the American military machine. Thank you, that was exactly the right word. That's the way it operates. He was whisked off to Guantanamo Bay for five years. Look at poor Julian. He's been incarcerated in one form or another since 2011. It's just terrible.  Now in my work with Consortium News, we are also reporting, I make the video, some producer, video producer, but we've been in touch with Australian parliamentarians who are in Washington at the moment. And this morning, David Shoebridge, Senator David Shoebridge, one of our favourites, our very own from New South Wales, he connected with us and he gave us a report of how the Australian politicians are going in Washington. They've been to Congress, they've been to the Department of State, they've been to the Department of Justice and they've been at the Australian Embassy. And he tells me that they were treated with respect, they were given a fair hearing and it seems that there are a lot of American politicians who are on board. One of the things that police meet the most is that David said, and what we are doing is we are correcting the false information. They think they are saying, even Anthony Blinken when he came here, he said that Julian had caused a lot of harm. We know from General Robert Carr from Chelsea Manning's Court Marshal that not one single person had been harmed. He tried to bluff, he gave a name, but that person wasn't even in the release, in the revelations, his name wasn't there. So he had to admit, not one person had been harmed. And so he said there are a lot of people who know all that already, but they are aware of the fundamentals in this case. Their first amendment is really important to them and there are lots of reasons now why the first amendment is, not only in debate, but you could say in crisis. There is a wave of censorship going on and I don't need to go into too much detail that, but that is impeding free speech. They are trying to nip the publications that came after WikiLeaks, that tell the truth, bravely tell the truth, they are trying to nip them in the bud. Consortium News has come under some attack, but we have kept going since 2010. Consortium News has published over 700 articles about WikiLeaks and Julian Assange and since I started, we have published around 350 films, video reports as well. So we got a little award, a little Julian Assange award like the week ago, but it was for that. It was for steadfastly reporting honestly, truthfully on the Assange case. That is what it was for. Next year that award will be for something else. That was the international one. But anyway, I have spoken too much. I think that today we are not just here because for the 200th time, it must be the 1,000th time for a lot of the people that I see here. We are the long haulers and we're not going to give up.  That's it, we want them dropped.  It's over.  And a great chance. Cassie Wagen, folks, please do it after Cassie Wagen. Truth tells a compelling story. The truth about Julian Assange places him in a very positive light. Here is some truth about Julian Assange. He is a political prisoner being held hostage. All available evidence shows us that everything he did was both ethical and legal. Julian is a journalist and a publisher. Julian showed the world how governments could be made transparent by protecting whistleblowers through his innovative use of digital encryption. Everything Julian has published is genuine and firmly in the public interest. Julian Assange is brave. His journalism exposed war crimes and high-level corruption. Julian personally redacted names to protect innocent people. And no one, I repeat, no one has been harmed as a result of his publishing.  Julian's journalism has revealed crimes the powerful desperately want to keep hidden from public scrutiny. His journalism has been invaluable for justice and has been used as decisive evidence in courts of law all around the world. Here, which I thought was attractive, truth results in peace. And you know, one of the best forms of truth is a photograph. And I think we should all stand together and get a photograph which hopefully Julian can see and maybe we'll be published on the consortium news and every foreign minister, every State Department, every diplomat in the entire world will see that we're not going to forget about this matter. Please come in so we can get a photograph of us all.  I guest him on a Cathy Bogan. It's our fourth, virtually our fourth birthday here. Every Friday, standing up for justice for a charge. Okay. And it's cake. It's celebration time. We're celebrating the work we've done. Setting up Cheerio to Julian. 200 weeks we've been here. And we're ready for the next 200. In the meantime, we're going to have cake. Two. Six, five, four, three, two, one. Free's been cut loose. That's very symbolic. If anybody would like to come... Have a piece of freedom. Come and have a piece of freedom. Come this way. Come and join us. Come and join us for some cake. Come and join our celebration. I don't want to cut this word. We're celebrating you guys waking up. We're celebrating your enlightenment. We're celebrating in 200 weeks how you've come out of the darkness. And you're into the light. And you've forced the politicians. We are seeing democracy in action. The will of the people is being expressed by those of you on the street. The fact that 90% of you are behind Julian is going to release Julian. You've done it, guys. You've demonstrated the power of democracy. Thank you. Thank you, everybody out there.