Hi all, good morning. I have with me, Shama Wazali. She's joining from Pune. She's our speaker and talking on automating the real user scenarios across multiple apps and multiple devices. This is a question, right, of what we have. How to automate that scenario on the mobile? For example, how to interact with that alert on the browser? How to interact on that post message what we get on the mobile device, right? And interacting and accepting that is tricky as well. Let's hear from Shama. Hey, thank you so much. Good morning, good afternoon, good evening, everyone. Based on where you are joining from, let me quickly dive and give you a quick introduction about myself. I have been working as a senior consultant, QA at XMCO. I have more than 13 years of industry experience. Mostly focused on QA automation strategy, planning, and enabling the teams with quality processes. I'll quickly move on to the topic. Let's take the first use case. How many of you know Zoom? I just want to make sure that this is an interactive session. I'm expecting you to quickly answer in one word or just give thumbs up. And I'm looking at the chat right now. I just want to know how many of you know of or have used any meeting apps like Zoom or it may be WebEx. I'm using Zoom right now for this conference. And I see more than 40 people joining this session. So yeah, I mean, quite a few are at least with today's word like where we are working from home and everything is remote. I'm sure one or the other app is being used by you. So in this case, let us take an example of Zoom. Can you tell me how Zoom is used for team meetings? And right now I'm using it for the conferences as well. So conferences it is used, town halls. We have a lot of people joining. So basically we have multiple users in the same meeting. And what exactly do you do in these meetings? Collaborate, you do the collaboration. What else do you do? You're sharing information through audio, video, right? Someone says killing time. OK, so what is it used for? Sharing screen files as part of the meetings, discussions, presentations. Right now I'm presenting my screen. And what do you think the most common and core use cases are? Of course, multiple users joining the same team and collaborating with each other. Now let us see where these users are joining from. How do you access these kind of apps? It can be your web browser. It can be your phones, Android, iOS. It can be desktop apps as well. I'm sure a few of you are using from web, a few of you are using from your desktop apps or some of you might be also joining through mobile. So now let us see how do you test these kind of applications? Even if you have to test it functionally manually, how can you test these? What are the important scenarios? Definitely you will not want to test the single user where the user is logging in. The user is hosting a meeting. You want to definitely cover the core part of it, which is having multiple users joining the same meeting and interacting. You want to test that. And you want to make also sure that all of these users are able to join from different platforms and still they are able to collaborate seamlessly. Now in this case, this is about testing it manually. Though it is pretty time consuming, let us say we accomplished that. But now can you think how can we automate these scenarios? Because with every single build, I cannot be sitting and validating all of these scenarios across different apps, versions, platforms, and meetings, different kind of meetings, different kind of personas, a host, a guest, a participant, a conference, and a lot of meeting controls. So that's not pretty possible for me to do it manually. So definitely I'll have to automate. Now, how do I automate this? So if I have to automate this, how can we automate these multi-user scenarios? Quite challenging. So let us see how did we solve this problem. The tech stack, I'll talk about the tech stack that I'm going to discuss in this, and I'm going to demo. The tech stack that we have used to solve this problem is using Java. It's a Java based solution. We have used APM for communicating and collaborating with the mobile apps, automating the mobile journeys. Selenium 3. Specifically, I'm mentioning Selenium 3 because this is not yet bumped up to Selenium 4. We are working on that, and soon you'll see some updates coming in as part of Selenium 4. And we are using a framework called as ATD, which is APM Test Distribution. This is used to manage multiple devices. And the cucumber to write the BDD tests. Peak Cloudy Integration for Mobile Infra is what we have implemented, but we have also made this compatible running on browser stack or headspin and source labs. And you can name most of the major of the device firms are supported. And then we have created a custom framework called as TestVis. And this framework is created to cater to the multi-user scenarios, where this is focusing only on orchestrating between multiple users across different platforms, managing that and doing the collaboration in a single test. Let's jump into a demo. So let me first show how a typical single user scenario would look like. I don't want to directly jump into multi-users, but there are some single users as well. If you see this test case, it is pretty readable. And the reason behind this using BDD and not using examples and so on, because anyone can come and ask me that why is it not implemented using the data driven using examples. We don't want to do that because of the readability. So this particular scenario is a single user scenario, where I say that given I am able to log in. I'm trying to log in with invalid credentials. And these are my credentials. Then I again try to log in with another invalid credentials. This is a single user. It is a single app. There is nothing fancy here. And you will also see certain tags here. What are these tags? So this particular test case can run independently on Android as an independent Android test, independent web test. And this is the app that we are running it on. And this is some. So these two are some additional annotations that we have given to for us to be able to execute a different scenarios group together, maybe. But what you can focus on right now is this. All I need to do is if I implement that for Windows, all I need to do is I have to give the Windows tab. So no more core addition, nothing. I don't have to really do anything. Now let's come to how can I actually automate a multi-user scenario. So this is a scenario. There are two users involved. Of course, I'm not going to use Zoom app or any meeting app in this because I do not have a developer sign build with me. So I'm using an app called as the app, which I'll show you shortly. And I have two users. It's I and it's you. I am on Android. I am launching and working on this application and Android. And you are on web platform. By default, we use Chrome, but you can also mention Firefox and so on. Now, if you look at this, this I and you are the user personas. And these two web and Android. It can be Windows and iOS as well are the platforms. And once you mention the platforms in the given, you need not to mention it every single time. After this, if you see, I'm saying when I log in again with the invalid credentials, you log in again with the invalid credentials. So in the first test, it was a single user who was trying to do log in on Android or web if I run it on web, two different times with two different invalid credentials. But in this multi-user test, I have two different users on one on web, one on Android, doing invalid login. So let us quickly run the scenario and see how can I run this. So to run the scenario, I need to pass on the property files. So for Android, I need a configuration site. I need configurations. I need to tell where my app is and all the other attributes it needs for me to be able to communicate with it. So where do I keep all of these files? I keep these files as part of my configs. And each app has its own config files. In this case, it is going to be the app config. Along with that, I also have a lot of other configurations where I define where my log should go, whether I want to go through Proxy. Do I want to run it on my local machine or the doctorized environment on CI? And what are the target environments? What is the test data file I want to refer to? What is the maximum number of drivers I want to allocate? Or it can be for mobile or it can be web as well. So all of these configurations are mentioned here. And we also have the integration with app.ly tools, which is visual validation tool. So if you want to configure that, what is the configuration file I need to use, whether I need to put it on or off by putting it as true or false, right? So all of these kind of configurations are there. And it is in detail, it's documented. And I'll share the links towards the end of the session where you can go and have a quick look. So right now I'm going to quickly run this test. I have my two emulators up here. And this test case that I'm running, as you see, it is on Android and on web, okay? So yeah, my app has started getting installed on my, if you see this particular emulator, yeah, this is the app that I am using for this demonstration. So right now the first user, if you see here, the first user is I, who is going to do invalid login. So this is the invalid login, the first user is attempting. And in the same test case, I have another user who will log in through web. Now, the first user is I, now the first step as part of my Android app is already completed, right? I'll have another user who will start on web now shortly. We should see a Chrome browser instantiated. This is the Chrome browser, right? Still my user one is up and running. In the second user as my second step of my test case, my user on web has launched the app and is trying to log in. And this is also going to be a invalid login. So if you see both the users tried logging in one on Android, one on the browser, and this is through the same test. Okay, I guess we should be able to, okay, that is it. That's what the test case is all about, right? Orchestrating between two different platforms and two different users. And this orchestration is happening through testvis behind the scenes, right? It creates the drivers, uses these personas, maps it, and then drives this entire interaction. Okay, that's the test case. Now, let's go back and see how the, maybe reports are populated. So I had put the appy tools as true. I wanted to capture all of these screens and do some visual validation, okay? So I'll go and see what's happening on my appy tools. As part of appy tools, there are only two settings that you need to do. You'll need to have your appy tools keys, which is set up as your environment variable. And you'll have to, in the configuration file, you'll have to put it as true. So that it will start capturing. And the piece of code that you, I'll just quickly show you one of the step where it is one single, I'll just say, okay. And so if you see, this is the only line that you need to capture these screenshots and send it to appy tools, okay? And check window is the name. You give the screen name, which is already as part of your class. And all you need to tell is what the screen represents. That's it. This is the single line of code that you need to write. And that will do all the magic. You will see your dashboard or your appy tools dashboard actually populating all of the screenshots, okay? And then you can see if there is any visual change. And you can, I mean, I'll not get in detail how you can actually go and what are the different ways you can capture and how you can actually run through this dashboard to validate that particular test or not. Maybe I'll leave it to this. Yeah. So that was about the multi user demo, okay? Then there is another use case, right? Though we have multi users communicating with different on different platforms. Now think about this. I may have different versions of this application. So the zoom will have, you know, frequently this is coming in, but I as a user will not update it very frequently. I might or might not, right? There will be few users still using the previous versions. So we'll have to validate with every single build also if the previous versions are working. And one of the valid case I can think of is think about there is some schema change coming in the new version, okay? And you might want to validate if the backward compatibility is intact or not. Like for example, there are few users still using the old version of the app. And there are new users who have, I mean, there are few users which have newly new version of the app and they have new schema changes, okay? And there is a meeting and there are different people, different versions, different schemas who are joining the meeting. They should have no problem and it should be seamless as well. Though you validate it from the backward compatibility test that you have on the data side of it, the database side of it and the API side of it and everything, you might also want to validate it as part of the end to end user journeys. How do you do that? In that case, do I have the same app as part of your, you know, tests? No, I will have zoom app for sure, but I have multiple versions of the zoom app that are multiple apps itself. So how do I orchestrate now the same journey with different users using the same app but on different and using different versions, right? That is one use case. Second use case, we all have some or the other apps which have, you know, multiple apps to communicate and complete one user journey. For example, let us take an example of any delivery app. For that matter, it will take Amazon because it is globally used. If you have all, you know, observed the person who comes to deliver your order has a mobile, you know, app who has a mobile app who is using that app. As soon as he delivers or she delivers he or she is going to go and update that app. And as soon as the update happens you will see the status updated on your app and you will get a notification. It also happens when you're doing the exchanges or returns for that matter. That person has to validate what, you know, product are you exchanging for returning and then approve from there only then the process will happen. Either it is a refund process or the exchange process on your app. You will see those notifications. So this entire user journey of refund or exchange has to go through multiple apps. Again, this will involve completely new different apps to be able to complete one user journey. So how do you now test that, right? Let us quickly look into a demo for multi-user app. And I'll just quickly show a test, okay? So, yeah, so this is the test. I've annotated that with secon. So here again, we have two different users. One is I, one is you. And one user is using a calculator app for the simplicity I'm using a calculator app and the demo app that we just used the app, okay? The name of the app itself is the app. So I have two different users on two different apps and they are communicating with each other, okay? So if you see there are different steps performed by these users interchangeably. So let me quickly run this particular app. Sorry, this particular journey. And to note is this particular annotation that we're using. It says multi-user Android. Multi-user Android means there are multiple users and both are using Android, okay? And in the previous case, I forgot to mention this. This is a multi-user Android web. That means there are multiple users who are either on Android or either on web. There can be multiple, okay, there is no restriction to how many users you may have. For this demonstration, I've just used two users, but you can have three, four, five users. And right now, I have configured this to have at the max five users on mobile and five users on web. It is configurable. You can increase the numbers, okay? So I'll go back to my test and see what my test case is going to do, okay? This is a multi-user Android. So I'll have my test case running both users on Android. Platform. So these are my two emulators app, okay? So the exhibition has started. I have instantiated the first one, which is the calculator app, okay? The first user is using calculator app and the second user, okay? It has instantiated that as well. The second user will have the app. If you see, you're the calculator on this side and the app on the other side, right? Let's see what's the next step. The next step is on the calculator app, I should be able to enter two.  And the next step is you press plus, okay? Yeah, that happens. Meanwhile, on this, the other side, if you see the other user on the other app is trying to log in. Again, it is invalid credentials. The user is trying to log in, okay? You get an alert. It is as expected, it is an invalid login. And on the other hand, you see the last step is you select five, that is you have to enter five now on the calculator app, all right? So this is how the orchestration is happening. Though I do not have the same app or two different apps, the delivery apps and all, because obvious reasons I do not have the developer signed APKs. I'm just using what I have and what I can use for the demonstration. But this is pretty much any app and any journeys that you want to run. And this is how you can actually work this way between two different apps, right? So that is it. Again, we are collecting the visual, we are doing the visual validation and we are collecting all the screenshot and sending it to our APTU server. And I should be able to now see the test is completed. Okay, some reason it has failed. Okay. Okay, something from the APTU side of it. Let me see if I missed something. Okay. I guess I was able to capture. Yes, I was able to capture, but there is something unresolved. Yeah, I have some differences. If you look at this, I captured some differences as well. Okay. That's about the demo overall. That's about how you can actually automate either multiple users or either multiple apps or both put together into the single test and you'll be able to automate the real world users scenarios that we have, which involves multiple app and multiple users in the same test case. This is again, open source. I have given the links in the references. Feel free, go use it. And if you have any issues, if you have any questions, you can report, ask us, we'll be happy to help you. And other than this, it has multiple other features as well. You can run it on CI. We have continuous everything, all the dependencies. And you can integrate that with any major device forms that we might be using. It may be P Cloudy or it may be Source Labs, BrowserStrike, Headscreen. Visual validation is done using AptiTools. It is a simple two-step. And we have done implement, I mean, we have integrated that with report portal as well, where you will be able to see real-time reporting and you'll be able to see that. And you should be able to orchestrate the tests. As of now, it is supporting web and mobile, it is iOS, Android and Windows as well, Windows desktop app and not the Windows mobile app. So yeah, that's about it at high level. It's open for questions. If you have any questions, you can take up. Yes, Shama, we have questions. So let me read out that for you. So first question from an anonymous attendee. How is the setup? How is the step definition mentioned for phone and web? How is the step definition mentioned for phone and web? Yes, so if you look at this example, okay, phone and web. So it has to be, you have to use multi-user, okay? And then if it has to be web and phone both, then you have this particular use case where you say multi-user, Android web. So that means few of your users are on Android, few of your users are on web. And then you have to tell who is on what platform in the given section. So given I who is on Android, given you who is on that. Okay, this is how you can define who is on what platform and this is the annotation that we need to use. Not annotation, this is the tag that you need to use and you are set. Okay, Shama looks like I lost the questions. Okay, since I rejoined, please go to the Q&A section and we can pick the questions from there. Yes, so the first question is answered. Then there is Harshil who has, can this be run for iOS and also together with web and Android? Yes, you can. Yes, you can. I just showed you one use case here, right? I have showed you Android, Android, Android web and I have showed you two users. You can have multiple users, one on Android, one on iOS, one on web. You can do that. The second question again from Harshil says, can it be run in Palin instead of sequential execution? Palin execution, yes, you can do. You will have to, again, you'll have to make sure you have a supported infrastructure so that you can execute and distribute the test cases using Grid. So right now we have containerized it and we have a Docker Compose here. You can mention how you want to use it. The third question again comes from Harshil. If we are running multiple test cases in this suite, be executing app and web cases separately at different speed or we'll wait for one test case to get over, no. Okay, this entire, this is one test case, right? So if the test case first step, let us take an example of Zoom. So as a host, if I host a meeting, right? So that is the first step that needs to happen. Only then the user will, let us say the next step is the user is getting an invite, only then the user will be able to see the meeting details, credentials and then be able to join. So first the user is, the host is coming in, hosting the meeting, then the participants will get invitation and participant one, participant two, participant three, they all join the meeting. That's how it is. So it's in sequence based on how the users need to, you know, collaborate as per the use case, okay? Let us take an example of your Amazon app as well. Once, let us say, let's take and return example. The delivery person comes in, validates if the product is intact and then confirms on the app that the delivery person has, then the or the refund will be instantiated and then you will get a notification. So the first step, the delivery app needs to be launched and they need to confirm the order, right? That it is intact and they should confirm that this is returned. Only then the next step will happen. So the first step will be from the delivery app. The second step will be from the customer's app, okay? So that's the sequence. I hope that was clear enough and I hope I got the question right. Then there is a question from Natesh Jain but how the sync between actions from two user will be maintained because other apps flow maybe depend on the completion of the first. Exactly, right? Only if this is completed all the validations that you have as part of this step is completed only then you will move on to the next step. If let us say the delivery app itself was not able to find your order that you have raised for refund then you'll not be able to move forward. In that case, you will not go to the customer's app and proceed further, right? So yeah, it has to be in sequence. It has to be confirmed on one app based on the user. Again, it is based on your user journey, test case and the validations you have as per every action that you're doing and how it is orchestrated internally as a framework. You can dig deeper into it but it is managed by testvis itself, okay? There is a class called as drivers who actually manages the orchestration. The next question, can Rital says, can we use single emulator for both apps? Single emulator for both apps if you have to do it differently but this is not, again, this is not a single user or the demonstration that I have done involves two different apps communicating in real time. If it is not real time, then I guess you can do it that way as well but that does not fall in multi-app. This use case is completely different Rital. If I'm pronouncing this correct, the next question is from Vaideshwaran. How the page objects are implemented in multi-driver? Okay, I'll quickly show that. So this is the steps, right? Step definition. Create driver for is the method which takes care of what persona and what platform, okay? And let us say I have providing a details for signup. This is a BL, this is a business layer and this is the login method, right? Now as part of this login method, I have login screen. Login screen get based on what platform this is on the appropriate drivers get instantiated and enter login details. This is implemented for both Android and web separately. So this is where the segregation happens, right? Here is your implementation for Android. And similarly, here is your implementation for web, okay? Similarly, if you have iOS, you will do iOS. If you have a Windows, you will do Windows. So the implementation will start segregating once you reach the screens. I hope that was clear enough. What about reporting like if one step failed for a certain platform will fail entire test case? There are two types of tests, right? It is soft assertion, hard assertion. So I don't want to get into so much detail on those aspects, but I'll quickly show. We are using soft assertions. If you have multiple assertions to be made as part of that flow, and it is not a breaking step, like if example, for example, if the refund itself and the product itself is not showing up for refund, then I cannot move forward with that journey, right? Does not make sense. So I'll use hard assertion there. Otherwise I'll use soft assertion where I need, now where I have multiple validations and it's okay if they fail, I can capture those failures and I can move on to the last step. What, okay. Muktaar says sometimes why are the mobile tests case running slow? Is it due to? One is virtual device. Second one is I have also enabled aptly tools. It will take a few milliseconds or seconds also to capture those screenshots and send it to the aptly tools server. So that small delay you can count in as well, but it's not very huge or dramatic. Okay. Rital says, can we use two devices on cloud? Yes, you can. The integration for all the major cloud or device forms are there. You can just put, let me show quickly, there is a, so run in CI equal to false. That's the reason it was running on my local. If I put it as true, it will connect to, again, you have different property files here where it needs to pick in what capabilities file if it has to be on source labs or browser stack and so on, those capability files will be picked. That path is given to the capabilities and then accordingly it will start connecting to your device form and running the test cases there based on the capabilities. It's everything is depending on how the capabilities and how you have to find them, what devices and the device information. And there is one question, is Android Studio is the platform for testing this one? Android Studio, I'm using emulator. That's the reason I use Android Studio and launch my emulators. But yeah, if you have emulators up and running it should be fine. This library is available to work with Java only. Yes, we have implemented as of now and supporting everything using Java only. You're free, feel free to go ahead and extend and implement in any other languages you're comfortable with. So, Sharma, I have a couple of questions. Okay, so how would you decide on to pick the scenarios that you want to automate? Not to pick the scenarios. For example, okay, you said apart from this, like whatever we saw now, okay, in the demo. Say for example, okay, now I have to interact with toast or I have to interact with an app, okay, on an alert or something, okay, of that sort. So how do you decide, okay, I should automate, okay, this use case. So my use case is enough to go and to automate the interaction on the toast or alert. So do have any checklist, okay, that you refer to, okay, only if it falls into, okay, for your six, okay, checklist, yes, yes, yes, only then I'll automate. Otherwise, no, I'll not pick this use case to automate. Do you have anything of that sort? Okay, first of all, when we think about automation, it's not only about UI automation, okay. Automation has to be across different layers of the application. And if everyone is aware about, it happens to be according to test permit, which is the best practice and which is the right way of implementing it. So I will definitely not cover all the combinations on UI, okay. When I'm running the test cases on UI, it is always user journeys. If you see, there is no single test case. There is always a user journey and all these user journeys has to concentrate mostly on if we have any integrations, if we are talking to any third party tools or there has to go across multiple modules and so on. But rest of all the test cases or rest of all the scenarios, okay, can be covered as part of the API workflow tests. And below that, the component tests and unit integration, of course, but I should not take all of these test cases to the UI. The demonstration per se, I had those validations and all of that, but that is not the only use case that we have. That is just a lack of the more apps that we have so that I could demo some meaningful user journey. But a typical user journey for, let us take in first use case that I picked up for Zoom should be that the user is able to, a host is able to host a meeting and should be able to invite a few, it can go in their context or it can put email IDs and invite few people. They should get the invitation and they should be able to use that invitation thing and able to attend the meeting. And once the meeting is launched, I can validate whether the users are able to do that, if I'm able to, if I have certain control state, if I can put everyone on mute or unmute them, share the screen, if the other users are able to see my screen, if I'm talking and if they're able to hear me, or your video quality part is completely different, but this is a user journey. Only after all of this, I'm able to share my file, if I'm sharing certain files, I'm able to do that. And then I can exit the meeting and it should be ended for all of them. Or I can also add two or three steps there validating if I'm able to remove someone from the meeting, okay? And if I can give a presentation permission to some person and they are able to share the screen or not, these are pretty valid scenarios where I want to cover in one journey, but I will not concentrate on validating single component as part of my UI test. I'll concentrate on journeys, the rest of the things are taken care below the layer. That's how I approach. So the follow up question here is, when you have this thought process, how do you make yourself, okay, how do you separate, okay? I should do these sections at the API layer and I should do these sections at the UI layer. So what's your thought process when you separate those? Thanks, Steve. This is a little subjective in general. As I said, your user journeys matter. How you're spiling across different components of your application, different user journeys, screens, or third party integrations that you have, you know. And again, it needs to come up with this strategy which is custom to that particular application has to be done only if you have a good context of the architecture, the implementation, also the infrastructure, how it is communicating if it is distributed or not. In that case, do I need to really prioritize this particular test case but because the behavior might change. So all of these questions should be answered only then you'll be able to come with this appropriate strategy and you'll be able to appropriately distribute your test cases across all of these layers. So my experience and what I say is usually when we're set to automate at the office. So the, and one who is okay doing the automation for the first time they think everything in terms of, okay, automating at the UI layer. So most times we'll not get to, okay, we can do certain things at the API layer and also we can include the UI, the both. Yeah, so this is a mindset and this will end up being very tough for those who starts the first time here. So having this knowledge, okay, we can also automate at UI and API layer and you can collect those in the user journey. That's something very, the good lesson, okay, which you have shared on this talk show. And I see, okay, a question coming up, but it's not a question, it's okay. It's a note for you, no question. We've explained a very wonderful session on multiple multi-habs and device. You guys will definitely like to try out applications. Thank you for sharing that. So we had a very good talk and very insightful talk for the engineers. Thank you, Shama, for that.


To Mayor Benjamin, members of City Council, Richland County leaders, to Ms. Baskins and the Martyr of the King, Jr., Memorial Foundation Committee, to Ms. Clark and the Martyr of the King, Jr. neighborhood, to the staff of the Columbia Parks and Recreation Department, to all members of Elective Office and all those who aspire to elective office, to the president of the NAACP of Columbia, Ms. Oveda Glover, to all of our students and to all of you. As a professor of history, I'm honored and humbled by the invitation to be with you this afternoon. We assemble in this part, this part to honor and to remember the life of Reverend Dr. Martin Luther King, Jr., a leader of extraordinary courage and vision who left us an enduring message of resistance, of justice, of equality, and redemption. Redemption, how appropriate and ironic it is that this program takes place in this part. This part, a flat land along Rocky Branch Creek, a symbolic space once in the minds and memories of some in this room, a place of division and restriction, now a site of redevelopment, recreation, and transformation. We gather in this part, a meeting ground in the valley. This part, to the east, Millwood Avenue, to the west, the University of South Carolina, to the south, Shandong, to the north, Waverly. And here we come together, hailing from every direction many experiences and many backgrounds to celebrate the life of a drum major for justice, a brilliant young preacher who used his eloquent voice and his intellectual gifts and marched into battle against injustice. We gather in this part, where there is on the edge of these grounds, an extraordinary memorial called the Stone of Hope, a memorial dedicated in 1996, led by the JCs, the NAACP, the National Council of Negro Women, churches, students, schools, all gave money for bricks to build a monument honoring Dr. King. It was not easy, sometimes it was hopeless, but others persisted, a stone of hope. We will hew out of a mountain of despair a stone of hope. We will hew out of a mountain of despair a stone of hope. We will hew out of the mountain of despair a stone of hope. If anyone knew the history of Dr. King, you would know that he was emphatic, that he was simply one voice, one person in the movement. It was September 30, 1959. Dr. King looked at a photographer and stood for a photo. That photo is now on display in the rear of this gymnasium. It was taking place at First Calvary Baptist Church. Dr. King was 30 years old, and he had come to Columbia for a meeting of the Southern Christian Leadership Conference. It was a conference organized by a funeral home director named I.S. Levy and a Methodist minister named Matthew McCullough, and also an extraordinary civil rights leader named Ella J. Baker. Ms. Baker came to Columbia to plan this meeting. And Dr. King was a featured speaker. When they came from nearly every corner of this nation, at the Township Auditorium and First Calvary Church, they came here to discuss inequities in education and call for federal intervention in schools that practice racial discrimination. They also came to discuss inequities in voting and said, we will commit all of our resources to ensuring that everyone who is qualified to vote will have the power and the ability to vote. But while they were here, they also gathered for a banquet to honor Dr. King. Now remember, this is 1959. He is 30 years old. He said, I am of the mind that we are about to witness an awakening in this nation, an awakening led by young people, September 1959. And Dr. King said, I want you also to know that this movement is not simply about me. I'm just the pilot of the movement. There is no journey without the grounds crew. And tonight, we celebrate the grounds crew. He repeated those same words in 1964 when he received the Nobel Peace Prize. He said, I accept this award on behalf of the nameless men and women who are willing to die for righteousness sake. Their names will never be in any history book. Their names will never be in who's who. But one day, men and women will know, and children will be taught that they're lived in this world, people who are willing to suffer for righteousness. So today, as we honor the life and legacy of Dr. King, we need not travel to Birmingham, or Selma, or Montgomery, or Washington, DC. We can just drive around this neighborhood, drive through King Park and Waverly, and see history that matters. As we honor Dr. King, the champion of voting rights, and as we mark the 60th anniversary of the voting rights bill, we are reminded today of a young man who lived in this community named George Elmore. George Elmore lived at 907 Tree Street. Just take Green Street, look back down the road. He operated a store at 2313 Gervais Street. And George Elmore simply wanted to vote. And in August of 1946, when he tried to vote in the Democratic Party, he was told that Negroes would not permit it to vote. So George Elmore secured the help of a local attorney named Harold Bullware, who lived in Allen Benedict Court. And they filed a lawsuit called Elmore v. Rice. And George Elmore was successful in breaking down racial discrimination in voting in South Carolina. He was successful. But he suffered indignity upon indignity. George Elmore of this community lost his store, lost his home, lost his wife, and some members of his family, and died of early death the same year that Dr. King came to Columbia. As we honor Dr. King and the push for equity and education, we honor the poor families of Clareton County, South Carolina, who filed a lawsuit for better schools in a case called Briggs v. Elliott. But as we remember them, we remember those here in Columbia who supported them, a young preacher named Joseph DeLane, who once lived on Taylor Street, an NAACP named Majeska Simpkins, who lived on Pine Street, an educator named Walker Solomon, who lived on Millwood Avenue, and a Baptist preacher, an insurance agent, who lived in the 1,200 block of Heights Street. His name was the Reverend James Hinton, who even when attacked and kidnapped by the Klan in the 1950s, he kept on pushing for civil rights. As we honor Dr. King today, the leader of the Montgomery bus boycott, we travel down Green Street across Millwood to the 1,100 block of Page Street. And there is an empty lot, but in 1954, in that empty lot, there was a house, a house where a young 19-year-old woman named Sarah Mae Fleming lived. She was originally from Eastover, but in June of 1954, Sarah Mae Fleming boarded a bus to go to work in Shandon. And she sat down in the first available seat, a seat reserved by law for white people. The bus driver demanded that she move and go to the back of the bus. She said, not today. She decided to get off that bus rather than suffering in dignity. And as she tried to get off the bus, she was beaten by the bus driver. Sarah Mae Fleming filed a lawsuit called Fleming versus SCENG. And that lawsuit unraveled segregation on buses in Columbia 17 months before Rosa Parks. We honor Sarah Mae Fleming today. As we honor Dr. King, the prophet of a new awakening, we honor students throughout Columbia who joined the caravan of civil rights workers. We traveled to the 1,100 block of Oak Street. And there is a white house, the home of Simon Bowie. We traveled the Laurel Street. There's a two-story house, the home of Talmadge Neal. We go to the 1,400 block of Hyde Street, where once lived Milton Green. We traveled Long Marion Street across from Old Booker T. Washington High School. And there live the woman named Maddie Johnson, who's here today. All of these students in March of 1960 protested segregation. They all were arrested and convicted. And in 1964, the United States Supreme Court overturned the convictions of young people right here in Columbia, South Carolina. As we honor Dr. King, today we go down Green Street and go to the corner of college in Oak. There's now a high-rise building called Errington Manor. But in 1960, there was a Methodist minister named Reverend I.D. Quincy Newman, who lived in this community. And on a Friday in July of 1960, Reverend Newman and his child and four other students from C.A. Johnson High School decided they wanted to have a picnic. On the day before they looked across the street and they saw white kids in this park. They also knew that there was a policeman who carried a shotgun, who chased away the black children. But in July of 1960, they came across the street. They came with a picnic basket and a blanket. And they had a sit-in right here in Valley Park. And they stayed to the police, chased them away. As we honor Dr. King, we honor a generation of people of this community who simply looked across the street and knew if they even came across the street or touched the grass on this park, they would be arrested. As we honor Dr. King today, we honor all the foot soldiers and all the members of the grounds crew. We honor Benjamin Mack, Oliver Washington Sr., two men who on April 3rd, 1968, they invited Dr. King to speak here in Columbia at the Zion Baptist Church. The day before, they received a telegram that said regrettably, Dr. King is delayed in Memphis and he will join you at another time. On April 3rd, 1968, he was supposed to be in Columbia and on that night, he gave his final sermon. He said, I may not get there with you, but we as a people will get to the Promised Land. I may not get there with you, but we as a people will get to the Promised Land. On April 4th, Dr. King was killed in Memphis. A few days later, his mentor, a man named Dr. Benjamin Amaze gave his eulogy and he said, Dr. King's work on earth must truly be our own. Dr. King's work on earth was truly be our own. Every year, we have programs like this. Every year, we honor Dr. King, but what will we do tomorrow? What will we do next week? Dr. King's work on earth must be our own. One last person, I work at the University of South Carolina. My office is on the other side of Green Street. And periodically, I would travel down Green Street, pass this part, I would turn left on Oak, I would pass the home of a leader of this community named Durham Carter, and then I would get to Pendleton and I'd turn right on Pendleton.  And there, the professor went to meet the real professor. There I went to meet a woman named Donella Brown Wilson, a teacher, an activist.  I sat down and listened to her to the very end until she was 108 years old. And she said, Dr. Donaldson, there's a problem with you all. I said, Ms. Wilson, what's the problem? She said, there's too much teaching in the textbook. Our history should not be in the textbook. It needs to be in your heart and in your mind. In your heart and in your mind. She says, history has no purpose unless you use it. And I've been using it since 1946, never missing an election. History has no purpose unless you use it. So my brothers and sisters of Columbia, if you want to honor Dr. King, then use this history. Use it as we raise our children and teach our students. Use this history as we demand better schools, better wages and better healthcare in this country. Use this history as we speak truth to power and blow the trumpet against wrong. Use this history as we challenge and tunnel through every wall of separation and division in this country. Use this history. If this history matters, then let us honor Dr. King, George Elmore, Ella Baker and Donald Wilson and use this history to secure, protect and exercise every bloodstained right to vote in this country. Dr. King said, the time is right to do right. We use this history and reflect in closing on Dr. King's last publication. He was perplexed about where the future would go. He was uncertain. It was 1967. The book was entitled, where do we go from here, community or chaos? That is the question. These are his words. He said, many of the ugly pages of our past have been deliberately obscured and forgotten. A society is always eager to cover up misdeeds with a cloak of forgetfulness. But no society can fully repress an ugly past when the ravages persist right now. Our country owes a debt of justice which has only begun to pay. If it loses the will to finish or slackens in its determination, history will recall its crimes. And the country, the country that would be great will lack the most indispensable element of greatness. And that is justice. This is our history. This is our story. This is our legacy. Let's use it. For when we all get together, what a day of rejoicing it will be when we all shander, millwood, Waverly, the University of South Carolina, the city of Columbia get together when we sit down by the banks of a creek in Valley Park, we'll sing and shout the victory. Thank you very much.


Okay, so ladies and gentlemen Katinka Kühnreich. So did you all? Thank the angels today No, yes, maybe applause Did you all took your prosium to today? No okay, see Katinka will tell you about the social credit system from China and Will tell you a little bit more about how a human being can be valued She's a Magista in political science and modern and ancient Chinese science She not only has her theoretical knowledge from books, but she always also combines it with a street study So please welcome with a very warm hand of applause cutting Hey guys I'm happy to be here and first I want to thank all the people who made that possible There's conference in this talk So thanks to all you and a special special thanks to all the people translating before we start I like To say a few points the first was the thank you. We already have that the second is I have to apologize English is not my mother tongue So you will have some funny mistakes that I make so the internet has a bit more fun Because the world can be a slice the second thing is I will take you on a journey through China's social credit system its current state and Because we only have half an hour more or less because I'd really like to spend a lot of time with you guys on talks on discussion and Q&A We have to leave a lot of interesting sites out So there were some excellent talks on the CCC about technological aspects of internet and internet usage in China I will concentrate really hard on this social credit system But if you have questions, please ask in the Q&A the Q&A will not be recorded so you can feel free and if you have more questions just contact me after the talk and and It's a China topic and Often when you talk about China people say, oh, yeah. Yeah, that's China This is no China bashing session. I'm sorry for anyone expected that The China has a government and a government Wants to control something So this talk is about social credit systems in China, but it is about a tendency as see Internationally it's the tendency to answer social problems with technological solutions or at least it's the try So please keep in mind. It's happening in China But it's not that we are safe in the West or cozy or anything else So it's meant as an example of an international tendency And I prepared some cards so I will stick to the topic after look at them from time to time This talk presents my current state of research. It's not the truth and This talk sadly represents my current state of my cold as well So I'm not totally fit. Please apologize that as well For a little journey. I prepared a couple of stops The first one will be a video from 2015 made by extra credit on Social credit systems in China So if you don't like the talk, you have seven and a half minutes to just vanish. Nobody will notice The next point will be updates on corrections. It's a video from 2015 and They some faulty information in it and to do that I will give you a quick look at the Chinese Internet landscape The next point will be the current state of social credit systems If I say SCS, it's the same. I'm just lazy and There's one question often not answered When talking about the Chinese credit system, it's why is it happening and again? It's not because it's an evil government It's a government So we'll dive in some ideological aspects of Chinese politics today And in the end I'm really looking forward to that point because I can shut a bit up and listen to your thoughts And I'm really interested in that So everyone already cozy That's wonderful. Thanks Then we can start with the video That is not shown right now. Now we need some technical support or It's much more fun when you see the pictures But we have time so We got free water Gentlemen, I think we have a technical problem here So while the walk and my stage manager is trying to get some people from there Yes, he will do this. He's a good guy. He's the best guy gentlemen ladies applause for the walk so while we're waiting to have the video and It I can trust me it looked really good from here Let's play a little game Later we will have a Q&A session, but unfortunately we are not allowed or we can't record the Q&A session and We will also not video stream the Q&A session So I would like you to have a quick hand of applause for all of you because you will have a great discussion with this nice lady and Therefore we try to make a pause No, no, no, that should be louder. Come on Okay, we still have no video, but I think over there. I did not hear any applause Could you could you could you please try it again? Yeah, better better, I think these guys are way better Are they come on some information I'd present you after the video. Thank you The information you get in the video is based on a press release of the American Civil Liberties Union and That contains some mistakes One thing when you want to know something about China the government is really open in publishing what they're doing and what they're planning to do and It's seems to be much more comfortable to just copy But maybe have a look into what the government says because it's a good way to find out what they are doing and they're scaring the open it works with a lot of governments and I Realized that because this video had a lot of impact and there was a lot of news report on that scary system in China But when you looked at the news report and you have the video before You found out that it was more less The same The very same as in the video even years later, so please if you want to find something out check for facts They might be online too So That's the picture And that's my break Even now looking at this I keep thinking that there's got to be something about this that I just don't understand Like I must be reading this wrong. It's just so clearly something out of dystopian science fiction And yet here it is in our world and people are actually embracing it Apparently China has gamified being an obedient citizen Going under the innocuous name of sesame credit China has created a score for how good a citizen you are and That's one of the scariest things. I've heard in quite a while. It's jointly run by 10 cent Yes, that 10 cent the one that owns riot games and has a significant share in epic and Activision Blizzard and also the ascendant Chinese Competitor to Amazon Alibaba hence the name sesame So the owners of China's largest social networks have partnered with the government to create something akin to the US credit score But instead of measuring how regularly you pay your bills it measures how obediently you follow the party line They dredge data from your social network So if you post pictures of Tiananmen Square or share a link about the recent stock market collapse your sesame credit score goes down Share a link from the state-sponsored news agency about how good the economy's doing and your score goes up But Alibaba and 10 cent are also the largest online retailers in China So sesame credit is also able to pull data from your purchases if you're making purchases The state deems valuable like work shoes or local agricultural products your score goes up if you import anime from Japan though Down the score goes and this score has real-world consequences like many games sesame credit has tears and levels and having a high score Gives you special benefits like making it easier to get the paperwork You need to travel or making it easier to get a loan now currently there are no consequences for having a low score But there's been talk about implementing penalties once the system becomes mandatory in 2020 Penalties like slower internet speeds for low-scoring citizens or even restricting the jobs that a low-scoring person's allowed to hold But there's one more layer to sesame credit and here's where this goes from being repulsive to downright insidious Because this is all part of a social network It also scans your friends So you will lose points for having friends with low-obedient scores and it tells you this at any point Anybody can check anyone else's score and when you check your own score Sesame credit provides a handy map of your friends to show you who's dragging your score down Have you ever had that thing where you play a game with somebody who wasn't doing very well And you've tried to change their behavior to make them do better or maybe after a while You just sort of stopped playing with the people who were holding you back That's at the heart of how this system works and it's also what makes this one of the most terrifying tools of authoritarian oppression I've ever read about because like mass censorship jail time assassinations Those are all big messy implements for keeping a population in line that messiness and severity foster resentment Eventually rebellion they're expensive they're unwieldy in the end those tools are impossible to maintain but social pressure Ostracization those things are free they happen on their own and as a government tool They don't have nearly the same potential for going embarrassingly Disastrously wrong with a system like this in place a government doesn't even have to tell neighbor to spy on neighbor to Rat each other out because that's all built into a seemingly innocuous game system the government need not step in Re-education will be handled for them by friends classmates and relatives who want to maintain a high score And if that doesn't work then potentially dangerous ideas still end up quarantined by the social isolation this game system causes Express or help to spread too many radical ideas and people will stop associating with you And not because some jackbooted thugs showed up at the door with threats But simply because associating with somebody with those ideas will lose them all the privileges They've worked so hard to obtain it Recontextualizes obedience to an authoritarian regime in the past you obeyed such powers because you were afraid fear kept you motivated But fear is negative it fosters resentment the world We're stepping into instead uses positive reinforcement to promote being subservient to the will of the regime It's big brother's kinder gentler hand and the things that make this scary is that we've seen the efficacy of this only too Well in games you may not actually know this but when World of Warcraft was in its early stages of development It had an unrested penalty mechanic that started limiting experience gains for players who had played too much and players hated it They resented it and they complained about it every day So after brainstorming on this for a while Blizzard had the idea to simply change how the mechanic was presented without changing any of The existing numbers or systems they started referring to the unrested experience penalty state as normal and made it the default and They started calling the original normal experience gain state as rested That's all they changed and everybody loved it people would log on every day just to get that bonus positive reinforcement works wonders but unlike World of Warcraft which built a system just to get people to embrace meaningless grinding Sesame credit has built a system to get people to enjoy falling into line now the system's not mandatory yet It's opt-in right now, but it's going to be mandatory in 2020 And there's a terrible brilliance to phasing that in the early adopters are gonna be people excited about this system people who are Already patriotic and are eager for anything that'll help display that patriotism to the world and as early adopters They're gonna talk it up. They're gonna give it an air of being positive and fun Then it'll be foisted on the society as a whole more than that though the early adopters are gonna compete Already you can see hundreds of thousands of tweets displaying people's high scores or showing off the new milestones They've hit giving a hard numbers to their patriotism and giving them bragging rights for being the most patriotic most right thinking person They know and that's gonna set the tone for how sesame credit is intended to be used as a competition to see who can agree with the government The most we've talked about propaganda games on this channel before but for all the time We've spent examining and deconstructing terrible games that a spouse hate and for all the studies on propaganda games James has done this is the use of game systems that frightens me the most because to most people sesame credit will seem benign perhaps even fun It's a conversation starter something to share with your friends But it's making heavy use of all the psychological motivators that we game makers deploy and scoring systems and ladders and levels Systems that we built to shape play habits and to keep people coming back Like I said, I'm still kind of in a state of disbelief looking at this If any of you are watching this from China, please tell me if I'm misunderstanding this thing because I would love to be wrong about it If not, well, I hope this episode can do some small amount to help the fight to keep such a system from becoming mandatory For everyone in the rest of the world I hope this helps remind us all how important it is to be aware and to be vigilant all of these Gamification techniques we've learned through making games offer incredible opportunities for making this world a better more engaging place But every great tool carries with it the potential for misuse and it's on us as a community who understands this amazing new medium To do what we can to stop that. We'll see you next week so we had the schedule and Thank you to XR credit for this video and Thank you for concentrating on gamification Because a lot of time when I talk to social scientists Without a lot of technological knowledge, it was like, okay, it's a new system and The whole gamification thing Triggered me and I wondered about a lot of people who didn't seem too interested in it Because I said The video contains some faulty information First, I'd like to concentrate on key aspects. They told us in with as a video There's a social rating system in China now The system will become mandatory in 2020. That's alright it works on big data algorithms artificial intelligence and your online and offline data and It uses technologies Like gamification and nudging and if you hear it's a William system. No, it's not 1984 was about force Gamification is about feeling good and cozy so In the updates and corrections, I promise you a quick look at the Chinese Internet landscape What most people already know From the beginning the Chinese government started to control the internet as much as it could and its users So some Vocapularies you might have heard are the great firewall or it's new extra or newer extra the golden shield The great cannon, which is a DDoS weapon. It would be really fascinating to dive in there But we have to watch from far Another point that's really interesting for us looking at social credit system is true name or real name registration Which means you can't use a lot of services if you don't give them your ID number And the mandatory system in 2020 will work on ID numbers as far as we know so We watch the other side the users there millions of users. It's one more than 1.4 billion people in China and I See teas are really popular Much more than in Germany for example And another thing that please keep in mind Cash is vanishing in China a couple of years ago. For example when I lived in China 2004. I Paid my rent in cash Have a year in advance When I paid for anything I paid cash you could couldn't find a lot of places Accepting carts, but now China didn't have this development of carts They just jumped right through paying with mobile apps and you can buy noodles or snack or magazine with your mobile phone And the Chinese users found multiple ways to deal with censorship and to trespass it it's a Wonderful thing to look up And now the big players of the Chinese internet because we learned some names in the film. I Might something very Chinese. I made something colorful Okay, you have three big players. It's Ali Baba and Tencent we heard about them and Baidu is the third biggest player Each millions of users or billions So to explain this I will use some American companies names to have understanding and Baidu is Known for that was the wrong Yeah, Baidu is known for by do barker This is like the Chinese Wikipedia. It's just a bit much controlled And they have Baidu pay and Baidu is huge in artificial intelligence So the next one is Tencent we learned about the gaming thing and A developed QQ. This is a matter that some of you might remember ISEQ Yeah, it's just a bit bigger Another app a lot of people don't think it's Chinese it is Chinese. It's called WeChat It's I can say the even M. What's up, right and guess what we chat developed we chat pay and There's another little company Tencent holds some parts in its snapshot. It's 12% owned by Tencent Ali Baba has Ali pay, which is one of the biggest payment apps and You can even use it in Germany now. I think in Some shops it's running Taoba one, which is like ebay just a bit bigger and And Sina way bow way bow man's micro blogging or Twittering and Sina is the biggest company in China and they hold more or less a third now. We come to something really interesting It's and financials because and financials Created something called sesame credit Sesame credit is Ali Baba's child not Tencent and Ali Baba's Tencent developed their own system so updates and corrections without colors 2014 was the year the Chinese State Council released a planning Outline on the construction of social credit systems in China and it gave us a lot of information but only Very few specific information so They started and in 2020 it will be managed mandatory, but they worked on for as long as at least 2005 It allows governmental and private SCS. So you have both and Eight companies are allowed to form their own private social credit systems We learned Tencent and Ali Baba two of them In different regions high and I'm for example. It's an island you have social credit systems run by the government So you see you have a lot of different systems running at the same time in different regions And sometimes you can choose between different social credit systems at the same same place and Sesame credit we have learned Is the biggest and run by Ali Baba and Sesame time is sesame credit is not the one who will be mandatory. I had one other point that I forgot it might Come back later so To give you a bit more information Let's have a quick look at recent developments that I thought of would be really interesting for you when you have that scenario of a Society That is formed by a rating system In 2016 there were some new guidelines on the SCS New cyber security laws and you might expect it. They are getting a bit harder and harder every time And there was a police robot. I don't know if you heard about it I was going to write an article but then we had a really nice conference that made us a lot of work and my article died in the way so You might have watched Wally. What was the movie a couple of years ago? You might remember Eve. That was a little cute white robot. I had a specialty. It could taser Some someone in China must have watched that movie too because guess what? It looks like Eve and it can taser You find pictures and clips online And the People's Bank of China announced its own digital currency to come soon They are working on it for years And the real-name registrations for online comments. So no real-name registrations No online comments and in 2020 The mandatory social credit system The next question is usually how does the social credit system work? And we take a quick look at sesame credit because they added more and more services That extra credit guys couldn't know about So we learned a lot of data mining they do For example when you use Alipay It goes to your score. So your score goes higher and higher the more you shop with Alipay Than other Alibaba services We know there are different millions of services and Now it's getting special because it draws information from officials as well. So we have information from courts debtors, records frees and Because love as always makes everything better you get your data from the biggest dating app in China It's bachel so you can see if the person you want to fall in love with had a good score And of course they're including more and more services And there are penalties now If you forgot to pay your child support for a couple of months or years or I have heard people can forget that for quite a long time There are penalties for example, you can't take high speed trains or first-class flight tickets Which is a very intelligent way again. It's a very intelligent way to Add penalties because if you start with people nobody likes nobody likes openly It's clever and of course the companies do not tell you a lot about the technologies like They use in the systems So and then people want to know about the mandatory system What it can do? How will it look? Answer on and there's a very simple answer We don't know The chinese government doesn't give you a lot of information on how it will look But we can guess In having a look on how the government worked in the last 20 30 years so We can have a look How they prepare the mandatory system like I said Different systems at the same time and they will learn from this and my guess is They will have like a little medley of the best features Of the existing systems and get rid of the faulty ones. So By best, I mean best From the point of view of the government, of course So now we are a bit later because of our technological difficulties Thanks again for solving Why do you have a social credit system? Let's dive a bit back in history Some people might remember the year 1989 before you had a lot of countries that called themselves socialists But after you had only a few and china is one of them And how did they make it in the 80s? They had something called The era of reform and opening up where they opened up to the west mostly and to capitalism and You might Know what that means China's called a transformation society And with some people getting rich quickly and a lot of people getting poorer and poorer and watching the rich You have a lot of social tension And remember china is a huge country With a vast amount and people and you know people are really good in getting on each other's nerves So you have problems I give you one number that I really like in 2014 The official count of mass incidents every day was nearly 250 And the number is rising so it will be much more today And a mass incident can be Anything from pensioners holding up banners demanding more money because they work their whole life I'm sorry. I really have to concentrate on not swearing To like riots full-grown riots petrol bombs burning buildings For example g20 in hamburg. You might have heard That's a mass incident. That's nothing To get crazy about that's just a little thing that happened. Hamburg is still standing and thank you Hello, hamburg And keep in mind organized societies are controlled on different levels. That's not only china And social control It's usually done by groups. So it's much easier if we control it at each other And it has a long history in china too and a lot of social socialist countries Do there are new forms of social control? So in china you have a hookah. That means you can only get social services Where you're permitted to live? I just give you a really really short version of everything. It's not it's a bit more complex as you know The dangan which you can say it's an analog version a lot of your stuff what you've done goes in there You needed a marriage permit if you wanted to get married And it wasn't easy to live without a marriage permit And as china became more and more digitized You might know what comes next Oh two in one Control became digitized as well And as people are using icts more and more they create a huge amount of data And the bloody thing with data is you don't feel smell Or see anything vanishing do you and People it's hard for us humans to develop Something towards something we can't see smell or feel And more and more technologies are used in civilians and social control But that still leaves the question Why is china doing it? Let's Go to another point. I'd really interested in Ideological influences the way we see the world and the way We think about it is formed by theories by ideologies And what's the chinese flag? You see it again. Maybe you remember some of you it's red with the yellow stars that usually is a code for socialist and This is Mao Zedong He was kind of big in china and so you have Here you have three socialist symbols It really helps to know a bit about marxism in researching china And especially in Mao Zedong thought it's not called Maoism. It's called more The young thought it's about what he thought and In this reform of Opening up i'm trying to feed you a bit of chinese history The chinese government opened up to more For example, they opened up fun to nationalism And if you know a bit about socialism, usually you wouldn't put socialism and nationalism in one room because they didn't like each other the chinese government Found a way They like each other They got really interested in pr and they really Researched other countries how governments there stood in power And someone not so well known to most of us. This is confucius Confucianism shaped and molded the chinese societies for more than 2000 years And if you have that big influence you can't just get rid of it It's in people's memories. It's in the whole society And confusionism came back as an ideology where Some parts of the socialists ideology vanished Confusionism came back and confusionism Is about a society where everyone is on her or his place and her place is always below And with all this new ideological influences the way of communication changed as well Before it was the masses and now it's the public All campaigns and programs had revolutionary names Or poetic ones like hundred flowers yet the great leap forward and all these campaigns Molded our picture of china or the picture most people up in their hearts people in blue red flags But now it changed you have new campaigns and programs and they have other names as well You have socialist harmonious society as a goal for the society And a couple of years ago before you couldn't put socialism and harmony in one room either And you have the chinese dream Yes, it sounds a bit like american dream Yeah And We learned that all governments are interested in control and feedback because you can control something If you don't pay attention and can't blow up anyway So like we have an autonomous nervous system that tells every part what's going on You have one electronic autonomous nervous system now in many societies not only china people using icts And a social credit system Just creates a wonderful opportunity of feedback And on the same time on influence so We come to the end of this talk and To the summary So Again, this I think is really important. It's an international tendency To solve social problems with technological solutions And as far as I'm concerned, this is not the best way maybe And The chinese government They do not count and think in years They think in decades at least And they looked at the internet and found out that this is a good tool And they're using it successfully But we know at least since Edward Snowden That other governments are capable of using the internet as a tool as well A social credit system exists of the use of big data algorithm icts and gamification And it will become mandatory and this game When it becomes mandatory Will define your life and not only your life it will define the life of the people is surrounding you as well The schools your children for example will go to will be Chosen on your rate And there's the opportunity To put this together with a national cryptocurrency So Thank you all for listening. That was my current state of research and my current state of my cult We both presented you this talk and I'm really looking forward to q&a and discussing Thanks


Hello, and welcome to D2 of.NET Conf. Obviously, we could not afford Scott Hanselman for two days. So you got me, and? Hello, everyone. My name is Mika Dumont. I'm super excited to be here. I am Seth Juarez, and we've got tons of exciting things today, a ton of sessions. Mika, can you give us a little taste? Yeah. Let me get out my list here. We have Visual Studio for Mac Reborn as well as some future of Blazor, some F-Sharp, new things in F-Sharp, tips and tricks on moving to.NET Core, and much, much more. Fantastic. So make sure you get your questions in while you're watching. Yes. Because if you ask your questions after we leave, then we can't ask them. So get them all on the board. We want to get all of your questions in. But also, we also have a technical treasure hunt. I'm going to read this because Beth Massie probably wrote this. By the way, you need to follow her on Twitter. She is almost to 10,000 followers on Twitter. And if she gets there, she owes me like 50 bucks. And Mika, she's going to give you like 80. I don't know how to work this out. Yeah, I think we're going to split it maybe. Right. So she gets 80, I get 50. Do you like solving hard technical problems and winning cool prizes? I know you do and I do. Yeah, I definitely do. You're not, you're going to want to watch all of that.NETConf 2019 because.NET Partners are sponsoring a technical treasure hunt. There will be fun challenge to solve and you'll be eligible to win prizes. Just go to.NETConf front slash partay, but spelled party. So what is this session we got coming up right now? Yeah. So right now we have Visual Studio for Mac, reborn new editors and new experiences with Cody Bayer. So Cody, take it away. Hello and good morning, good evening wherever you are today and thank you so much for joining me here. My name is Cody Bayer, Senior Program Manager on the Visual Studio for Mac team here at Microsoft. Today, we're going to be talking about what's new in Visual Studio for Mac from new editors and new experiences and all the other great goodies that we have in Visual Studio 2019 for Mac. So without further ado, let's get started. So 8.3, that's the version of Visual Studio for Mac that we just released yesterday. It is the biggest release of Visual for Mac that we've ever had. It's filled with all bunch of great news features from new web editors, multi-targeting support, of course.NET Core 3 and C-Sharp 8 support, as well as smaller updates like pinning documents and proof quick fixes and source link. By introducing all these new features, we're hoping to really improve the overall developer experience within Visual Studio for Mac. Not just one thing, not just another thing, but the overall end-to-end experience. We have updates in each of those and we'll get to those in a moment. Of course, this is built upon the solid foundation of Visual Studio 2019 for Mac. That includes updates such as the new C-Sharp editor and the new XAML editors, improved Git reliability, updated templates, published your folder, and all sorts of other improvements as well. So not only does 8.3 represents a major step forward in web development and in.NET Core development on VS for Mac, but it's built on top of this great release with new editors, new native editors. We can get right into those because I can't wait to show you all the neat stuff that they include. But first, I want to thank you to our preview users. None of this would have been possible without the folks who hopped onto the preview channel, tried out these new features and gave us feedback. It's invaluable to us and we could not do it without you. So thank you very much for trying out these new features and giving us that feedback to get us to where we are today. All right, so new editor, new backend. Let's talk about what makes up this new editor, why we have a new editor, and what we can do with it. So I had to think of.NET as the most powerful cross-platform toolkit there is. If you look at what.NET does and what we can do with.NET, nothing to me demonstrates this more than the new editor for VS for Mac. So if you think about what a quintessential Windows application is, the Visual Studio Editor on Windows fits that bill. This is WPF, it's been on Windows forever, it's fast, it's stable, and it's also based on.NET. So we looked at what we needed for a new editor in Visual Studio for Mac, we look no further than Visual Studio on Windows. Because it's based on.NET, because it's this cross-platform toolkit beneath it, we were able to port a vast majority of that over to Mac OS. The only portions we didn't take with us was UI layer on Windows, that's WPF, on Mac, that's Cocoa and Cortexed. So we were able to take all the high-level editor features, IntelliSense, all the quick fixes, Roslin, and the language services, all of the little tools that tell what text were to go, all of these things were shared between VS for Mac and VS Windows. That is the power of.NET, and that is how we were able to take the quintessential Windows application and move it to Mac OS. So let's take a look at it and see how it looks in the real world. So I have a cat. This is Buttons right here. He is my cat. I went to my vet and I was told that he needed to go on a little bit of a diet. So I need to start tracking my calories for my cat. This is something that is hard because if you didn't have cats, you know they don't take well to being told how much they can eat. So I want to make an app to remind me of this. I thought what a perfect opportunity to do this, to try out the new web editors to see how I can make an ASP.NET Core app with tracking my cats feeding. So in this application, SuperBasic, I wanted to use ASP.NET Core 3 with the MVC pattern utilizing razor pages. I wanted to mark which days exceeded the K-Cal limits, as well as allow multiple cats because I do have more than one cat, and I don't want to get them confused to feed all one and not feed the other. That would be a disaster. Finally, I want to clearly demarcate by day, so I don't again give all my cats food one week and one day. That'd be terrible as well. So let's take a look at what we did. Hopping on over to VS for Mac, I'm going to launch the Fitty Kitty demo, and I immediately see there's a to-do here. I need to fill in this class. So what am I going to do? Well, first I know that I need a DB context here, because this is the meal context class. So by typing in DDO, shoot, I don't remember the library and the namespace which DB context comes from, and that's rather embarrassing. But with Visual Studio for Mac, I am given a beautiful new tool that helps me figure this out. So we're hopping to preferences and selecting IntelliSense, show import items. I'm able to enable this new feature that lists which import items are available to be imported into my project based on what I'm typing in IntelliSense. So let's see that in action, and hopefully that will make some more sense. By typing in DB context, now I have all of these different completions available to me. You'll see to the right, I have the namespace for which those completions belong. So DB context, which is what I need to import into my project, comes from Microsoft Entity Framework Core. So all I need to do is arrow down to DB context in my editor, hit Tab, and not only does it complete DB context, it also adds the using into my application. This is a huge time saver and really speeds up the amount of time it takes for you to remember all these different imports. I forget them all the time, so it saves me a lot of time, and I hope it saves you a lot of time too. All right now, another great time saver that I've found to be super useful in this IDE is the concept of snippets. So snippets represents any amount of code that you may use many times. So in this case, I need to type in all the methods and mechanisms for the DB context here, and I don't necessarily again remember the exact everything about it. Because I want to impress my friends, I'm going to go ahead and use a snippet that allows me to see and enter the code with just a few characters. So previously, I created a snippet for creating the DB context information. So to do this, I'm going to type in DBCTX. You can see right here that not only is there a snippet here, it has a snippet icon of the ellipses there. As the IntelliSense says, if I tab twice, it's going to insert the DB context snippet. So we'll go ahead and hit tab tab and there we go. Now I have all of the code I need for the DB context method and I can type it in here. So as you can see, there's two sections within this code that say not set. Those are variables that I set within the snippet that allow me to as I'm filling out the snippet type in the code. So let's see. I know this needs to be named meal context. So I type in meal context and you can see not only does it fill in the first variable, but also fills in the second because it both marked with the same placeholder. I'll show you what that looks like in a snippet editor. So you go to preferences, navigate to code snippets. You can see the DBCTX is the first one on the list. That is the one that I created. Now as you can see, I have public, dollar sign, name, dollar sign. That represents a placeholder for user input. You can see that the name is the same name between both of the insertion points. This means that what I type in one, I get in the other. If these were different variables, I'd use different variable names. You can mix these up as much as you want to get the results that you want. Again, I find snippets to be a huge time saver, mostly for code that you have to type a lot, but you don't necessarily remember every aspect of, or for code that has a few plug-and-play parts that you can quickly replace with others. All right. So that's great. I got this part all completed, but I do need to add my DB set. So I'm going to call public DB set. While we're here, I want to point out another fantastic time-saving feature of Visual Studio for Mac that I absolutely love, and that is type filtering. So in this work really well, when you have the show import items feature on that we talked about previously. Now, my completion list is rather lengthy. So if I backspace here, okay, I'm going to start to the D, you can see this is a very full completion list, and it can be somewhat daunting when you don't necessarily remember exactly what you want, but you know it's a class, you know it's a delegate. So with IntelliSense type filtering, you see these icons down at the bottom of your completion window. You can select which ones or which types you want to filter by. So for example, if I want to filter only by classes, I click classes and that limits the completion list to only include classes. Same goes for things such as enums and structures. There we go. By limiting the number of items in my completion list combined with the power of showing all available imports, I have a much more helpful and friendly completion list available to me. So I know that DB set is a class, so I'm going to limit the class, navigate down here to DB set. I know that it is a type of meal, and IntelliSense is going to suggest I call it meals, which I agree with, that's a good name. So I'm going to accept that by hitting tab, then add my get set here. There we go. That essentially completes my context here. Now check out my to-do list and see if there's anything else I need to do once I clear this guy out. There we go. All right. By clicking on tasks, I can see that I need to change kcal from strings to int. So I'm going to double-click here and navigate. I change. Okay. So yeah, it's actually doubles. So I need to change these doubles to integers because that's the data type it needs to be, and whoever did this probably Dominic he did it wrong in the first place. So I'm going to go ahead and change this to be integers. All right. So I can do this in several different ways. I can do a final replace, but that might replace things which I don't want to replace. I can do them one by one, but we don't want to do that anymore. This is the 21st century. We don't need to do things one by one. So what options do I have? Well, I have the power of multi-carat editing. Now, multi-carat editing does, it allows me to have multiple insertion points based on pattern matching. So what I'm going to do here, I'm going to hit Command, sorry, Option, Shift, period, and it's going to select double. Now, if I type that key combination again, we'll see that the next double is selected, and the third time, the third double. Now, if you notice to the right of each of these strings, I have the word or the cursor blinking for double. That means that there's three insertion points in my code right now. So if I type an INT, each of those is changed to integer. So without having to find and replace or doing these each by hand, I'm able to quickly replace those codes in it. Now, this is a very simple usage of multi-carat editing. It is a super powerful feature and it clearly has way more uses than what's demonstrated here. But I hope you give this feature a try. It's available again through keyboard shortcuts and also through your mouse clicks as well. For the keyboard shortcuts, if you check out multi-carats under the Edit menu, you see all the different combinations of keys that you can hit to enable different multi-carat options. All right, so that's step two is done. Now, if we recall, I need to be able to tell when I overped my cat. So let's go into the index.cshtml, take a look at the new web editors. All right, so this is the Fitty Kitty index.cshtml page. Now, I know a few things, surprisingly, but I do know a few things. One of those things is that I need to have a CSS style. But I want to make sure that I'm using proper intelligence here. So, I'm going to, right now, I'm in an HTML document essentially, it's a CSHTML by the code I'm looking at as HTML. So I'm open a tag and I see that I get HTML IntelliSense. That's exactly what I would expect at this point. But I notice this style. I know that the style I want is going to be of type CSS. All right, so now I'm within CSS, I'm within the Style tab. So I need to have a designation for overweight or over calories, apologize, and here I'm going to say background color. See now, I'm getting CSS IntelliSense. So by giving this CSS IntelliSense, I'm able to then complete what I need in this context.  So it is readable. I also mentioned that I wanted to have some sort of designation of differences of days. So even days will have a gray background, odd days will have a white background. That way I can clearly demarcate the days. So I need to have another designation here. I'm going to say even day. Again, going to use CSS IntelliSense to get a background color. I'm going to pick light gray. Perfect. All right, there we go. Now I have all the CSS that I need to fill out the styles. So I'm going to hop down into my for each loop and add the code. So we saw HTML IntelliSense, we saw CSS IntelliSense, and now we're going to see sharp IntelliSense all in the same file with context-aware IntelliSense. All right. So how are we going to do this? Well, you can type in C sharp. So I know that I need a string to designate the type of style I'm doing. So style choice. Let me just initialize that that way. All right. So I know the main differentiator is going to be the day. So the first thing I want to mark is whether it's an even or odd day. So if item.time.day is an even number, then style choice is going to equal even day. As that's what I set here. So even day. So you notice that I have set these values to be even to or to be equal to those which I declared it in my style. That way I can use the CSHTML and the C sharp code to designate my style. So I'm going to do the same thing for the over. So if item.kcal limit or day total is greater than 75, 85, let's go with that. Style choice is going to equal over. As again, that is the name of the style that I've put in place within my CSS. So finally, I need to add the class here to my table row designation. So class equals at style choice. All right. That should complete it. Now I should have what I need here to see if I've ever fed my cat, which is important. One thing I want to quickly point out is I can now choose which IDE or sorry, which browser I want the IDE to launch. So in this case, let's go ahead and launch with Microsoft Edge Beta. So I'm going to click deploy, and we're going to watch this work hopefully. The ability to really pick out your web editor is a small but big feature. If you know what I mean, it's not something that's going to change everything, but it makes things a lot simpler. Oops, I have to trust this certificate. Of course I do. I'm a trusting person, and then you type in my password, and I'm going to let you all see it. So I'm a trusting person. All right. Passwords typed in. Bill is successful. Deployment is occurring. Let's see how I did on feeding this week. Locals for 2001. Perfect. Here we go. Now I do have these days designated for when I overfed my cat, I overfed HEMA one day, buttons the other. That's unfortunate, but now at least I know which days I did overfeed my cats on. We did have an issue with even day, and that is because I named it wrong. So if I go back down here and I run it again, even day should now designate the colors as we would expect. Let's make sure that works as expected. There we go. Now the even days are marked as such. So let's take a look back at what features we covered. First, we covered the updated web editors. These include native typing performance with context-aware intelligence. Again, that context-aware intelligence was the ability to have different intelligence languages within the same document based on the context in which I'm writing code. We also saw automatic intelligence importing through show import items. That allows you to import types as you type and ensure that you have anything available to you. One thing to note though, is that if a NuGet package is available in your solution but not within your current code file, it too will be available in the completion list. Intelligence type filtering allows you to limit the amount of data within your completion list based on type. Again, that with combined with the show import items is super useful feature. Finally, we saw multi-carat editing. This allows you to insert multiple carats of code at the same time based on many number of different constraints such as matching characters as well as strings. Finally, one thing I didn't get to show, which is super important, is right to left support in the editor. Now, if you see on the translation here, this is welcome to the editor in Arabic. Arabic being a right to left language, that means the language of the sentences start on the right and end of the left, opposite of what we're used to in English. On the legacy editor, you see that the string was backwards, so it actually read in reverse. That's no good if you're trying to type in the right self-language. Luckily, the new editor supports right to left languages and we can see that the end of the string is where it should be in a right to left language. Again, this is a very important feature if you type in the right self-language or bidirectional languages and we're super happy to have that in our IDE. It was a top community request and we're happy to fulfill it. All right. So quickly, I want to talk about multi-targeting here and then let's see here. So I'm going to open a new instance of the IDE, and multi-targeting is a new feature in Visual Studio for Mac that allows us to target different versions of the .NET Core framework within the same solution. This is super useful when you're trying out new framework types or you want to work on migrating your code. So I'm going to open up this multi-target sample and as it's opening, let's take a look at what this actually means in practice. All right. So here we are, multi-target framework. So you can see up here, I have the ability to choose .NET Core App 3 or .NET Core App 2.2 and also have the ability to target it here. One thing I want to point out in this example is how IntelliSense is aware of your multi-target situation and lets you pick and sorry, demonstrates what versions of completions are available to you. So I'm just going to go on down here, I'm going to type A and as I scroll down, you're going to see that some of these have these little warning triangles next to it. Let's see what that's all about. All right. So if I hover over and select App Domain Setup, we see that it's only available in .NET Core 3. That's not available in .NET Core 2. So now as a developer, I know which target framework I need to pick in order to use the code I need to use this time. Again, another super handy feature that really makes development go a lot faster. Let's hop on back over to PowerPoint here, play from current slide. So again, with multi-targeting, you're able to see that you can target different frameworks with a single app. The framework is aware, sorry, the IntelliSense is aware of the framework which is selected and also aware of what's available in each framework. Super powerful feature and I hope you check it out. We also have an updated XAML Editor in Visual Studio for Mac, which is a huge, huge, huge benefit if you are a XAML developer or if you write in XAML at all. The new XAML Editor includes fuzzy searching, resource intelligence, and type filtering. Now, we don't have enough time to get into this today, but I do suggest checking out both James Montemagno's talk as well as David Orton now is to see how the new XAML Editor works in real-time. I also want to point out that there's more VS for Mac available at .NETConf. Tomorrow at 8 AM, my friend Sayed Hashimi is going to be here to demonstrate how to get started in .NET Core 3 with Visual Studio 2019. Again, I scratch the surface of what's available in .NET Core 3. Sayed's going to deep dive into it and make an app from beginning to end. I really suggest checking it out. It's going to be a great, great, great presentation. All right. So, time for questions. Quickly, my name is again, Cody Byer. You can follow me on Twitter, at seal underscore Byer. We have at Visual Studio for Mac, if you want to follow us on Twitter as a team. Documentation, check it out, aka.ms slash VS Mac docs. Finally, check out Developer Community. We're here to listen to your feedback to provide suggestions, aka.ms slash VS Mac dev call. All right. Let's toss it over for some questions. Wow. That was awesome. Thank you so much, Cody. I love those multi-carat tools that you showed earlier, actually. It was pretty sweet. We have some questions here from Twitter. So, let's see the first one. Over here, S. Ravi Kumar wants to know, I don't see an option to add Docker support and new editor. Any idea when that will be available? I don't off the top of my head, but if you want to hit me up on Twitter, I will get back to you as soon as I can on that. I believe that most of those, the main goal was to get C-Sharp, then XAML, then web, and then these extra Dockerfiles, and YAML, and all those other files, in there as quickly as we can post that point. So, we're looking at the 8.4 timeframe most likely, but if you hit me up on Twitter, I'll get you some more exact timeframes there. Great. Yeah. We have another question on Twitter. Let's see. So, they want to know what's on the roadmap for VS for Mac. Great question. First of all, you can check out our roadmap on the docs page. I don't have the link available and I apologize for that. But we're really focused on bringing Blazor support in 8.4. So, if you've watched any of Daniel Roth's amazing Blazor talks, Visual Studio for Mac is aiming for 8.4 as our Blazor timeframe. So, check out that. Also, update your get back ends to ensure that your get experience is as good as it can be. And again, bringing more of that editor goodness across other aspects of the IDE, including those support files. Awesome. Well, one more question right here. When will .NETConf videos be available on demand? They will be available within 24 hours. So, you can get them right off the presses. Well, I'm pretty excited for the next session. Well, actually we have a little commercial break. Please enjoy this short little package.