My name is Kashif, I work at Direct Time, and I'm going to play through some of my experiences over the last year by developing Android apps. The real thing is that I think most professional people who have done Android development for a while would find it very obvious. This probably works better for somebody who just started Android development. There are some companies that don't really do the things that you would need to find value in. If you find out this obviously probably works for 40 years. So I would start before I begin, I'm going to tell you a little bit about our company, so that we have some context about what app you are doing. So I work for Direct Time like I mentioned, and we do some really exciting work I'm working with one in the business that does communication software. We think communication is largely broken. That's part of that. We don't have communication products on mobile devices, and that's why I've got it. We have, we write server components. We've got desktop and web clients. We do all of that. Yellow Fun Zero is downstate. But it's downstate. You should catch it. I'm going to show you that in the video. We even have a stall. So you don't have to wait for me to catch it. Again, the stall, if you have an offer running, in case you crack out an iPad 2, no strings attached. Okay, the product that I'm working on is called Talk2. Talk2 is a communication software, and we currently do it for Android, iPhone, BlackBerry, desktop and web client. You know, the job in the company is that we want to cover all platforms. So if you can't wait through any of these platforms to you, we'll deliver it in person, but somehow we'll deliver the message. We cover all kinds of services. We cover Facebook, Gmail, Yahoo, MSN. We cover all kinds of channels. Not all of this is completely developed. Lots of stuff is under development. So essentially what we're doing is we're doing... I'm going to talk to you about, particularly, Android chat application, and my experiences while building it. Right here is the screenshot of an application. A very big task, like the unstable version is available on the app market. And the unstable version is going to be out soon. We also have versions available on the web, as well as on the desktop. So one of the first things that I want to talk about, and I've given a whole talk on the subject at Android camp, I think, last year, was, therefore, in all Google apps, you want to use native and not things like titanium or phone app. And that is essentially, you know, that's the basic point. And some of the users that you don't want to use, HTML5 or web-based services, it's part of that because they're usually not complete. They do some 80% use cases. You need some gadget, utility, that they don't implement, and you'll find that missing. They're usually not very performant. There was a talk earlier with you, also, and the gentleman highlighted at the same point. They're not very performant, especially with things like slowly. And we've had a lot of trouble with that. We just had a lot of time trying to make things slow instead of building the product. There are lots of counter cases in all of these solutions who don't have titanium or all that. And their core quality is horrendous. So if you don't try, and typically it's for all of us, but typically the core quality is horrendous. So if you have to open and modify something, it's a pain. I have that up on Slideshare. If you are interested in more details on why this sucks, you're writing a 30-page copy. And that's the name. The other thing I wanted to talk about with this debugging, everybody is quite different when you go to the Android. So if you go and start with one of the sources, the sources that you go to, there's a tab guide, and there's a video stack there, and there are lots of great videos, you know. And most of them will talk to you about telling that you must use dvms. But typically we found that when we started, actually developing, you know, even with dvms once a month or close to a release, you should really use dvms more often than that. So how many of you know are doing Android programming at Razor Maps? Yeah, and how many of you just started? Okay, great. So we have more, most of the audience doing Android programming, and I think about half of them have just started. So dvms, you know, obviously will tell you about what objects are created in your application, what your heat looks like, you know, what the process heat looks like, essentially. But importantly, it will also tell you about thread leaks. And I found that, you know, there are objects that don't get collected because you're reading code, buddy. And you will have to find that and all of the documentation on dvms will tell you about that. But you'll also find thread leaks, you'll have to use dvms. You'll find that there are some threads which are just not dying, because they're waiting on some rock that you haven't released, and you don't realize that because that part of the application isn't what you're working on, it's not what you're testing. So if you use dvms often to debug, you'll find those threads killing them and you'll have to become a lot snappier. Another thing that happens is that in IntelliJ user, in IntelliJ user, you get Mac with XS for Android 3, right? And you start off on the right thing. You start off on Mac. But some IntelliJ users... What is Mac? Mac is a memory-adalyzing code for it that basically takes the dump that dvms produces and makes it the most data information to use some of that. So when I get a Google run, how do you use a code that uses the dump? I call it jhat. I use jhat for a really long time and jhat sucks, actually, compared to Mac. So even if you're an IntelliJ user, you will not notice there's a Mac standalone piece available on the native side. You should use jhat instead. One of the really good reasons to use that is because it will dominate a graph. So when you're trying to debug and you want to find there are objects that you've left behind, a dominated graph will help you measure the impact that that object which you're looking or studying has in terms of memory. So it tells you how much memory that object is taking and how much memory all the references that object has are taking. And so to collect an object, what kind of memory will get released? This dominated graph is not available in that other tool. I find that extremely useful. Another thing I noticed is that often when you start using text to load, you realize that it has two 8K signatures. One is start method tracing with just a file that you want to trace through down to the tool. How many of you are familiar with what Stresu? Okay, so I should maybe talk about what Stresu is. Very few people raise their hands. Stresu is basically a profiler that's available in the Android SDK. And you can essentially run it. How you run it is by calling a function in your code. You should have to go and add this call. And as that code gets processed, the profiler starts recording all the instructions that have been played out in the emulator or in your device.  You should use the profiler. You should use the profiler again. And Stresu is the profiler for Android. Now when using Stresu, most people or at least we guys in that book start method tracing and then you give it a filing there and you realize that nobody ever goes to 8MB. It doesn't go more. And you know for a while you can take to look deeper into the APNC. There's an alternative call available in which you basically tell it that you can go ahead and extend the file dump size from beyond 8MB to something like 100MB. And that's when it becomes useful. 8MB is not really useful. It's about a few seconds of running around. Another excellent tool that we have found while developing for Android is Akra. And Akra basically helps you submit error reports, crash reports from the device when an error is analyzed. So if you have any un-part exception you can configure Akra. We'll basically drop the jar and add some XML lines. And configure Akra to go ahead submit that either to a Google form or to your own custom map it can go in a specific course to it. And every time an exception occurs when some user is using a device you'll get that place you'll get to know what device it is and what was the menu there and a lot of other things. There's a lot of different stack place which you can just run in and then debug. Most of you won't end up using Akra and kind of surprised I haven't found this. So that's available on code.google.com slash p slash Akra. It's completely automated. You can also do other things with Akra that's extremely customizable beyond just simple automatic debugging. The third thing which we found kind of useful especially in people in cases where somebody is using your device and you're not there to debug is that a screenshot might be whenever somebody told us internally given the company that I'm facing a problem there's a path we tell them to go to your house and long press our logo on an item. And they get this menu and they send debug logs. You take that and you use Akra to send those debug logs post the state of the machine and you can tell Akra I want to know MB you know I want to know the state of this variable so for them to post all that that's extremely useful that's not something that one would typically find. And if you do that it will become easier for you to debug most of the stations. Yeah. No it's for one application. I'm sure I don't know if you can use it for multiple applications I haven't tried but you can put it into one application of the charge and then there will be a lot of XML code essentially. No we need to do that. Because we have an API in Akra that we use for error report. Error report is what we use to report the error. So you can catch exceptions and then report it by Akra instead of installing the error because it may not be important except for things like that. So in those debug logs you send Akra or log data and that's useful usually to debug. But the third point that I thought was really important is to set it on the LQW which means we're developing for desktops or servers is that you really don't think too much about memory at least not on the outside but androids with this constraint especially in smaller low end devices turns out to be memory. So whenever you're programming on the Android the thing that you want to keep in mind is the memory and there's a lot of effects but it's not called some of those things. So what tends to happen when you kind of do desktop apps is you don't mind storing these variables with state ready process already computed it's all there in terms of state. All that state is taking memory right and what happens when when your app releases a certain threshold of memory that is allocated on the heap or it becomes eligible for garbage collection and it gets collected and then that doesn't need to go to the user experience. So try to store only bare minimum state. It's not something you consciously so try to store bare minimum state or store anything that you need that you could possibly need. The other thing is that you don't need we like using statics we like using statics for everybody studies and things like that and what ends up happening is statics don't get collected because they don't get collected till the class gets collected the class doesn't get collected till the class lower gets collected so that's never So anything you put in a static will stay and it stays in memory and things you should not put in static are context stuff that the UI framework don't put in a static because it can be left there or if you are using it in a static for some reason remember to kind of go ahead see all the code paths and not like when you are done using it because that can just take memory it can just stay there forever soft preferences are not what you don't use on desktop code typically Java has soft and weak differences other than regular differences and what soft preferences do for you is that basically whenever your team is running short of space soft preferences are collected first so you know for example in our app there was a screenshot earlier about there was a roster in that screenshot and it had Aftas for users so the reference to the Aftas is a great candidate a bitmap is a great candidate for a soft reference because only the top the A that are visible need to be memory the hundreds that might be following it at least don't need to be memory so if you use soft references and you scroll the view adapter will then kind of call the image to be rendered and you can get it from your disk or wherever show the image and as you scroll off it's a soft reference and it will get collected as when memory is acquired again something that you don't do on a desktop client typically don't use soft preferences garbage collection garbage collection is a very interesting area especially on Android one of the things I am doing right now actually I am quite finished doing it is I am really going to script that analyzes logcat output and what that script will do is as you are using your application there is a stream of logcat output that output includes garbage collection lines so it says GC concurrent or GC normal whatever done for your process ID so what I think you are doing is that I am going to trap all that garbage collection output and figure out what screen or what activity I am in by augmenting that output with some logs so I know what screen or activity I am in and see when garbage collection increases and whenever garbage collection increases that's a place where we have created too many objects and then too many other things that we shouldn't be doing now why is this a problem because I think 2.2 and earlier garbage collection is completely blocking in Android right so when we are collecting garbage your app is not going to respond your process is not schedule is not running so what's better so what happens a lot is for example I find in some areas we create a lot more objects to render screen right and that we have to show the garbage collection now I think 2.3 onwards there is partial partially concurrent garbage collection happening from the full garbage collection some of it is you made concurrent which is slightly better so that's another thing to look for garbage collection it kind of slows you down it's not fucking you look for when you are doing desktop app actively you are not saying okay what's my garbage collection but I think you should do that when you are developing your Android app and see how that happens one thing that objects could have been compiled early good act is making objects fast you know as fast as they can be using in New York there is a memory allocation that happens to the time that it has to be but that's not object-related compiler such as java really good act they make objects fast you know when you don't make an object of something it's probably the philosophy that you follow which is all great for desktop it's not so great for Android because you have limited memory so it might be better to write your code in a fashion where you reuse objects instead of re-creating them and so that's another case that's useful and counter-intuitive also there is this API there is this framework called on-load memory that is this is a method that's called by the Android OS whenever it's running sort of memory on all the services that are that are likely to get collected services or applications that are likely to get collected so in this method called if you reuse memory like bitmaps images that you're using if you reuse all this stuff out there's a likelihood your process will not to kill and collect it and so people don't actually use that so it's not very easy to use it typically you won't end up having too much to release anyway but you could release bitmaps and things like that so that was memory tip number four is that don't use services services really get collected so even if you think you need a service you'll be a different chat client with a service because you think it needs to constantly run for messages to come in how can you write an application like a chat client which dies after a message is sent and then somehow wakes up when a message arrives it's possible to do that in Android services are less likely to be killed than your application or activity but not having an agreement because there's nothing to get collected and so there is no downside so I think clearly you don't need a service we haven't completely migrated to a non-service team yet because there are some cases that still work on but it's completely to use C2VM the push technology that Google provides and an alarm manager which is a voice available to you in Android you can use these two features to kind of let you know when your process needs to come to life in order to process something so let me give you a quick example typical chat client would just be running a community and have a port opening a socket open and you'll be getting any messages that come on that socket and has the time to process what I'm suggesting you could do is once your user has gotten some required the process can be killed can be collected and you register to the Google push service and you have written a good server component that whenever it gets a message it raises a push to your phone to the Google push service the push arrives on the phone and you receive all the phone through the Android and activate whatever little port that you need for example if it's a message that you can just show the message create a notification for it to whatever else if you need to wake up periodically not based on some event happening outside on the network then you can use alarm manager and that can wake you up and call whatever you need to call on a periodic basis so it is possible not to use the service at all it's best if you don't use it it makes your application extremely robust you can't focus too much on snazzy devices you know when we order the phone to test we can order all the phones that are now current in the market and cool and they all have better specs than our users what they are typically using so you need to kind of focus on the rain devices and a couple of things that happened here one thing that happened was because we had good phones when we like for example the Samsung S2 that's the phone I had and I tested the app and it ran to the app so I said damn it's too easy and we went ahead and released the application and I found a lot of users who had this phone using the app and I thought wow actually a lot of people use the S2 but that's not true what happened actually was the guys who didn't use the S2 left our app rather quick because it ran so well on those devices all kinds of mobile devices right so people have been fooled there by thinking oh ok only S2 and high devices matter and we seem to be running alright and so we are fine so you have to make actually the reason this is important is this is a diverse platform there are all kinds of things running on Android so I mean if you are going to make an app available for them you will be very conscious and see what what choices you are making when you are doing this and so on you go for example see the Android emulator is a generally emulator right it's very strong you could use it it turns out to be stronger than most devices that currently being used right which are currently in the market so you find that your performance on the emulator might be little little sad I was for example that we have this problem because we don't use an emulator it's a simulator they actually run it on the CPU at that same rate and speed up of the CPU so that's why all your iOS apps look prettier when they have been demoed like if you saw the apps today they were a lot smoother right the reason they were smoother is because they were running on the full CPU whereas the emulator kind of doesn't do the full CPU use some double instructions essentially a user of the a portion of the CPU so as to emulate the device and the experience the user has it turns out now that the emulator is even slower than one of most of the low end devices so sometimes you want to get close to reality performance on an emulator so you need devices and you need low end devices for those various resolutions they have DPI and DPI and it's a very high resolution what is that from actually it's something like that so yeah there is no problem with the emulator it's a general emulator so you can use it just a little bit capture all the any device you should kind of use it lay out movements you should work with your scale across all the scale sizes very well whether it's a small device which has a keyboard on it you know it works on that you design it works on that it works on a big S2 device and you don't have to support everything you could you could consciously decide to support devices which are not very high it's just a decision that leads sorry to charge it's very high it's a decision that leads most of us we don't even think about this actually most times but you need to do this kind of thinking when you're releasing for the android because anybody from a 7000 back galaxy wide to a 30,000 back phone could be or whatever it works for the android or you would ask us can you do this right can you do that can you make it look like this can you make it look like that and we say wait we'll check and get back to you like checking for each of these questions took a few days so we can save you over those days and almost everything is customizable not almost actually everything we have met is customizable that we have to do is customize it and it allows you to customize but specifically I have so pretty I think out and the reason that is the reason for that is customized look at our time look at this and it works so when when you're developing for the android the thing you need to tell your to do everything you can you know you know you don't need to even you know a keyboard with a SMI money. Things like that. You don't customize anything. Then that's completely possible. Databases are generally slow here. They're doing this. But Database from the Android, which is SQL like, you know, on a smaller, lower-end device is very slow. It's actually very slow. So what happens is you see this. You can see this really if you're not doing it right. So when you are not doing it right, you know, when we started, one of our biggest performance problems is scrolling. And our SQL is sitting right here. And here's some obnoxious number of people that he knows. Some 8,000, 10,000 of them. He wants them all on his roster. We don't know so many people. So we're not pretty happy with the testing here. A couple of thousands of blocks and all that. So we tell our SQL that, listen, Bahrain, you should test the app. You should try it out. The first thing Bahrain does is he picks the lowest-end device he can find, an HTC legend. That's how obnoxious it is. And he runs the app like that. And the app doesn't run well. Which, from what I've heard, it was pathetic. And the reason that happened is because you know, the largest roster in it, the device was low-end, and we had been folding it in for medium and high devices without actually thinking about size and ability. And so one of the things we were doing wrong, so we had to fix things. One of the things we were doing wrong was thinking SQLite is like SQLite on a desktop. We need an item, we need it, you know, and then we show it, it is in there. And we improved performance glossary just by doing stuff in batches. Batches, writes are not actually possible in SQLite because it doesn't go batch-insert. But it's a lovely tool. Utilically somewhere, I don't know if it's documented, somewhere in the annual protest for database.insert. And what that does to you is it allows you to multiple inserts, they compile it once and execute it once. The inserts are still single, they're not batched, it's not batch-insert, but it's slightly better than individual writes. Another thing we learned was that if there is anything happening on the UI, please don't be doing anything on the database. This is not intro-different.  But that's what you should be doing. If there's anything happening on the UI, on the UI, you basically do nothing, that's definite, and don't run any other thread, don't do anything else when you're working on the UI, on the lower devices, that's what's going to give you performance. If you start writing even on a different thread to the database, you will notice an occasional job or things like that on the UI. So you don't do that. You need to write a code in a fashion where work gets held and therefore, and then you do that work later. Either when that activity is not there, there's not much happening on the UI, or the UI is off or something like that, or the user is working somewhere else. There are things that are not bad. I'm saying you're showing your services, if you can. I think you can avoid using a service or something like that. That takes the groups, the ideally operated and directed and the app is starting and all that. That can all be taken care of if you don't use a service. So what they're saying here is one of the contributing points that I raised was hey, don't keep too much stuff in memory, but do bad things. If you're going to do bad things, you're going to do a lot of stuff in memory. So you have to use some kind of heuristic or case based on your own app and figure out how much you can do it, how much you can't do. Both those things are going to put in my experience, but it's a balancing constraint. So actually, I would assume that if you're doing this as a multi credit app, then while I'm writing, while the write is blocked, why should it impact my processing on the UI side? That's why I'm estimating the UI performance. His question is that if I'm doing another thread, why should this go? It turns on the processing path and ready to discuss on no end devices on Android. Even if another thread is doing it, the CPU gets utilized quite a bit or the IO channel gets utilized quite a bit and you don't get the kind of output that you want. So if you notice, typically on desktop, you don't even get, you just have a different thread, my CPU is fast enough, my disk is fast enough to multiply multiple threads and I don't realize it. But you end up seeing it when it happens on the Android. I think it's specifically where we started. So when we started doing batch writes, you would ask for people's aftars to write. We thought we'd batch them up and write them at one time. So if you ask for K contacts, user profiles, or aftars to write, you would get those 8 and you would write and the user's still scrolling on the screen and we have batched in your writing and you could see jerks. That shouldn't be happening if it's on a different thread. On desktop, you won't think that would happen. But we saw jerks.  So we started doing batches and we tried to figure it out. And we kind of realized that even as a writing to disk, at that same time, when there's some exhausted UI work, which is CPU intensive, CPU intensive fully is happening, then you can have a bit of a problem. So that's... So I'm assuming that your UI thread actually needs 100% of the CPU at that point. Because the amount of CPU to the right operation before it would hit disk at which point there's no CPU required. I get the point that it actually needs 100% of the CPU. What? Scrolling is very CPU intensive despite the GPU. Correct. But it still doesn't need 100%. The background services that are running on Android, they're all consuming some amount of dedicated CPU for different doings stuff themselves. So yeah, but if you're reaching a fairly high point of saturation in terms of the CPU, you start seeing that kind of deal. Again, this is not slightly load devices. You do not see this one in history. You probably won't. You just go past it. So you try to have a Galaxy One or Infrared on Samsung Galaxy S, the first one. You could see these issues. In the UI thread, then that's not a good time to be doing your database rights. You know, if you're doing anything on the UI, the user's interacting with the UI. That's what I'm interested in. So the user's interacting with the UI. Therefore, writing databases inside that for later. So for example, let a patch up for a user's requirement. The moment the user's done strolling, then go ahead and write it down. Don't do it on a different thread at the same time. You can't do anything on the UI thread. In fact, what you're saying is why UI processing is going on. Don't do any other CPU activity. Exactly. It has nothing to do with necessarily just writing to the database. Do any other CPU activity, you don't know, block the UI thread. You want to have context with the UI thread and the patch in the desert in terms. Yeah, but most CPU activity does not do much faster. But yeah, these are easy cases. Essentially, when there's something happening on the UI, you don't want to be doing too many other things. Over there, defer that before the UI can stop doing what it's doing. And then go ahead and do this. So that's what I'm interested in. Does that clarify it? So we can start with a very complicated pattern, right? I mean, just take a moment. Let's say someone starts strolling. Somehow, you have to notify or block your CPU address or write it as a cancer task. The moment you are stopped strolling, then again, you make it up. Yeah, yeah. I'm just struggling. Thank you. What you said, you saw a lot of girls. You were talking about your friends on the Earth. Yes, right? I was talking about myself. No, yeah. I was talking about myself. But that's exactly what you're saying.  We're not pleased about it, but it kind of helps the performance. As long as the user feels the app is snappy. I mean, you know, we really believe that fast and snappy is a feature now, even in this age. You can use Chrome for no real good reason other than it being really fast. So, yeah. So we want to put this kind of stuff into the app. Have you tried the interactive search where you use a script on searching for some item and then you put the data that doesn't start searching indexing? Oh, I can't hear you. I can't hear you, please. Put the questions to the end. Can you finish this up for us then in our presentation? I'll answer that later. I wouldn't dare. Another thing I recommend is, you know, we know networking works badly, but it really works badly. The couple of things I've just learned today, there's a gentleman who has, I think he works for a call-call processor team or something, and they obviously bring stuff for Android. And he did some research that Steve Souders, who is a guy who used to work at Yahoo for fast websites, for fast hours, kind of brought about. And it is somewhat, basically, the radio is expensive, which is. So when you're on GPRS, you're getting on data through radio, right? So after 10 seconds of inactivity, what Android does is, in order to save back here, it kind of makes your radio connection dominant. It turns down the volume, it's one way to think of it, and it consumes less of power. But then what happens is, if at the 11th of the 12 seconds, just after this is done, the user wants to use the app, you know, and do something, then what happens is it leads to a spike when the radio link is turned back up, right? So this spike is kind of fairly large when it starts, or when it's turned back up from government, and then comes to a level and stays at that level, for a while, and then if it's at that level for about 10 seconds, they turn it down further. And then to get it back from there, it takes a spike. So if you are in a chat pane, you're chatting with your app, the user is actually chatting with someone, and the screen has a lock, right? Send a ping packet or something just to keep your network alive so that the radio doesn't go down, and the response is, that's one use case for this information. The other thing is obviously you can, you realize where your power consumption is going to start looking at things like this. One thing to do to reduce power consumption is multiplex. So don't make many sockets, amortize whatever sockets you have. So for example, if you have a socket which talks to your server, you can substitute at least the incoming data with Google C2D and push service, right? So how that runs is that Google has one socket open on your device all the time. And it's used across multiple applications. So if you use that socket and don't create another socket, you're not using extra backing. And you can only do that if you're using push in your device. You should all use push. Also if you still need a socket of your work, you should multiplex. I'll give you a use case. So a user has multiple accounts to our application, right? We can create one socket for each of these accounts with our XMV server and chat. But the better we do that for mobile devices, you should take one socket and put all of these screens or four screens or as many as they open on that one socket. And you know, just add an attribute that shows your XML to indicate that you use one socket. Don't use multiple sockets. Again, something you won't think of when you're doing desktop programming too much. Prefer native TCP. We kind of build this up very hard and complicated way. But TCP is fast and simple. And you don't have to write code to do anything on it. The code is in the language. Don't build stuff on top of TCP. You should just plainly use TCP. It's fast. It works well. The last tip I've had is around monitoring and similar stuff. So I can use a couple of things that we found very useful. One, Google Analytics, while it claims that it is plainly towards Android and iPhone devices for analysis, is basically useless.  I think somebody's going to give a talk about a tool I'm recommending, which is called Flurry. It gives you a lot of information. So I would recommend that you use Flurry. It has an SDK for Android. So you don't have to write any code. You just have to send this code. You can send it to you. You can monitor custom events like are people swiping through my app? I'm monitoring that. I see that about 0.01% people swipe through my app. So I can give this information back to my UX that I need to know something with it. So all of this stuff is kind of important because you're not there since you're using the app. So Flurry is very useful. Another excellent tool which is not talked about quite a bit, this is again also in the SDK that we've heard SDK quite a bit, is Monkey Run. How many of you have heard of Monkey Run? Good. That's about 40% of your audience. That's great. All of you should be using Monkey Run if you're doing this. What Monkey Run does is Monkey Run allows you to automate or emulate a user using your app. Basically, through the ADU bridge you're able to send commands and make the app behave in a certain fashion. So you can use that as a basis for building automated tools like Robotium. But that's just one kind of tool space. If you can basically automate your flow through an app, you can do a lot of interesting things. It should look like Monkey Run. Tell us what I had. I hope some of you will find that useful. Are there any questions that I can answer? You can get into that Twitter address or my email address at the right time. And I hugely recommend that you comment about our stall. We'll tell you we have a lot of openings, we have a lot of bright people, and we'll do some exciting work. There is actually a limit on C2DM. It's actually 200,000 per day. There is a software. There is a limit on that. And it gets paid if you cross that limit. So I mean, how do we replace the service using first? So you've got to be really brave when you're on that. I mean, I don't know if that 100,000 number is accurate because I haven't found a number. No, I mean, it's in the Google site as well. It's updated to 200,000 now. Right. There is a limit. It's not absolutely real time either. There are problems with C2DM. For example, Google runs C2DM if there are four apps that are using C2DM. And one of them has a message. It may not send it. It kind of expects some other apps to also have messages. And then one time it will go ahead and... They bundle it sometimes as well. They bundle it to delayed things like that. Yes, that's all true. You should consider this. I'm saying it's possible. I mean, that doesn't require a service which typically you would think of requires a service. I mean, based on the chat app, you cannot push chats using C2DM because that's what I might be seeing. No, no, no, no. You push chat. If this question needs that or the information that, you know, there's a chat that's spending for the server and you could open a shop and get the message. But yeah, we will affect real time this. That's one of the reasons I'm completely new there is because of the users' flow. But it is possible. You may not be writing a chat service. So if you're not writing a chat service, then it's still writing a service to go and meet you. Between that and the non-managing, you should have some solutions. Any other questions? He said, while the UI operation is happening, it's cut out to avoid the database access. So one of the use cases is where the user uses interactive service. You keep on typing text and it searches for that at least. Have you tried anything like that? Because that's pretty much like UI class database. We have search like that, but we haven't made enough optimization there. So my answer is no, I haven't tried exactly something like that here. But we have that to do with search. We haven't made that change of definition work on the UI here because we haven't found it to be a performance problem. But is it perfect? I mean, it's like it goes fine, there are no issues there. Yeah, it goes fine. So it's like a local user that you're searching. So just talk to the user, the other contacts that you have on your roster. And in this particular use case, it's important to be fairly performant. I think the statement was that if the UI operational performing is intensive, then it's preferred not to database work. But just updating, at least you with four or five items from possibly one intensive UI, scrolling is intensive. Scrolling for 8000 people in roster on an HTC legend is intensive UI. That's really where you go. So for example, in that case, a contact roster is completely nobody in you because we needed that. So the search is very easy to do. There's no distance work. And therefore that particular optimization or experience has no value. Any other questions? It was a great talk. I think the most contentious thing you said was the UI and database issue. Can you talk any more about database optimization and any things you might offer? To be honest, you know, not much because there isn't much we have done outside of what I've offered already. No, so no. Nothing I think of which would be useful as a premium. Okay, so all this stuff about the UI being a problem whilst you're using the database might just go away once you optimize the database. Well, you're talking about the scheme of the optimizer? No, I'm thinking more like putting transactions in memory using German mode or putting asynchronous rather than synchronous mode on or using indexing, for example. Yes, so in this particular case I was talking about there was a case for indexing. Always a case for indexing. I'm sorry, what did you say? There's always a case for indexing for performance. In this case, I didn't find the problem to be that because our issue was data coming in from the network and that's the writing into the database not so much reading from it and that's where indexing would come in on reading. So the light is significantly slower than the read. So if you haven't done much else beyond this so your question was can I offer something else? Maybe there are optimizations there. Let's say we have issue 315 and we have to take the break and if there are any more doubts we'll take one more question. This is regarding the Android Multi-Testing. I have seen tasks as well as the handlers so anyway. What I have observed is like I'm doing an asset task and I'm doing it in an activity. So that activity is completed. I'm moving to another activity where I have another asset task. I've already done an asset task cancelled in the other activity. But when I'm moving to other activity where I'm starting another asset activity, the previous asset activity is not closed. It is still running and also the same thing with the handlers also. If I'm using a handler in the Android it is in one activity. So I'm moving to another activity and I'm using another handler. Even though I have stopped that handler there I'm also in that the handler goes to the handler which has been already stopped. So the question is open to everyone. But as in tasks there is not a guarantee that when you cancel it it will close immediately. There is another API called thisCancel right? And that returns to Pune and that tells you whether your cancellation request succeeded or not. So you need to use the handler on that function. Even though handlers are also in the same case. If you're using a handler also. I don't remember all the handlers. Maybe somebody has to answer. But for using tasks I can answer. I would avoid async tasks all together. The red pool that you can use only has one thread in it. So async tasks is essentially you can do one thing in the background and then you have to queue it up. I'll repeat that because I don't know if it was all good. And he was saying that he would recommend not using async tasks at all. And I don't hear about the rest of it. So we can get him on mic. I would recommend not using async tasks at all. Not just because of the boilerplate that is inherently using it. But also because async tasks are run by a single thread pool. Which means that you can only run one async task at a time. So what I probably do in response to that would be an unbounded thread pool using executors. Let him executors with that and then using a handler to shove things back into the UI thread. Alright, and that's one of this talk. Thank you for being here. Now we have a debrief and the next session will start at 3.45. Thank you.


Being back, it's like nothing's changed, which is so awesome. The energy, the excitement, everything new.  This is my first can trip ever. Being able to connect in person is just really electrifying. I think it's been a really big challenge the last year and a half, because the face-to-face has not been as much as prior. So to have the opportunity to get people face-to-face and talk and rekindle, I'm so excited about that. We have 400 speakers in our EqualityLounge diverse, amazing content, anything from AI to everything. As an operations person, I'm thinking about how are we designing systems, tools, and processes for people to thrive? Creativity is a good solve and answer to a lot of problems. I'm looking forward to just being with thought leaders. Media is self-democratized, and our attention span as a human species is decreasing. We do have an overwhelming amount of information and data, so how are you seeing that? Like, to capture people's attention. What are we doing as a community, as an industry, to get people to care about the things that actually are going to be beneficial, not just for the economy, but for our lives as human beings who have to share a planet together? Don't be shy, find a new buddy. Exactly. Get somebody and be a friend with them. Yeah, I came here by myself. And so to already connect with these two incredible women, building the relationships that I'm sure will sustain a lifetime, I'm super excited about that.


Hello, and welcome to this video by filmsbychrist.com. That's Chris the K. There's a link in the description. And in this little series, I'm just demonstrating a lot of commands real quickly. I have other videos that go into them more in depth. But I quickly just want to hit over some other very common shell commands that you might use. For example, LS will show you the files in your directory. I have none right now, so let's go ahead and get one. So I'm going to say WGet. And I'm going to WGet is to use to download files from the internet. So in this example, I'm going to download a file that we used in a previous video, a CSV file. So if I just say WGet and give it the URL of the link, verbally putting in quotations, because it can cause problems with some special characters and some URLs if you don't, we'll hit Enter. And it will download that file now if I LS. It will list that file. If I was to run that WGet command again, it's going to download the file again and put a dash 1 at the end there, signifying that it's a second copy of that same file. But real quick, if I was to WGet-C, it would actually continue to download. So if you're downloading something large and it stops, you can dash C to continue it. But if it's already been downloaded, it's just going to check and ignore it and says there's nothing to retrieve. So that way you don't get multiple files if you try downloading the same file more than once. WGet is a very, very common command. It's built into many, many systems. It's on your phone, probably on your TV, router. It's everywhere. Another command for downloading stuff that's very common is Curl, C-U-R-L, which is commonly installed, if not very easy to install on most systems. Works very similar. Some people would argue that Curl is more powerful. I usually use WGet just because it's more commonly found, especially on lighter weight systems. But if I was to use that same URL and say WGet, or sorry, say Curl and that URL, by default Curl doesn't display the file or doesn't download the file, it displays the file. So if you wanted to put it into a file, you could do dash o, and I'll just call this p.csv, just get a different file there. And now at downloading, I can say p.csv, the cat, and there it is. If you wanted WGet to display the file rather than download the file to and save it, we will say dash capital O. Now, for example, capital O is just the same as lowercase o for Curl. I could give it a file name. So example, if I wanted to download that file again, I can say dash O, and I can say, I'll just call this pp.csv, and now at downloading, but instead of saving it as people.csv, it saved it as pp.csv. But if you do capital O in a dash, and you can put a space there or not, that's saying standard output, which means it's going to display it to the screen. So that's two differences between Curl. Curl automatically displays it to the screen, and you have to tell if you want to save it. Curl automatically saves to file, or you can tell it to display it to the screen. So they both have opposite defaults in that aspect. Both give you a little counter, as you can see here, some output of what it was downloading and some output. If you didn't want that, with WGet, you can say lowercase q. So dash lowercase q, then O in what you want to output, and that means quiet. It won't give you that download progress bar. So that is useful there. So now we've looked at List, WGet, Curl. I talk about Fuzzy Finder, FZF, FZF in the last video, which once installed, when you're installing it, we'll ask you if you want to add, if you're using Bash or ZShell, if you want to add it to that for uses. And then once you do, you should be able to use Control-R to search through previous commands. So I hit Control-R, it starts listing my commands, and now I can start typing. It's going to go through my history, so I can type in test, and it brings up all my previous commands that have tests, or in this case, if I do WGet, it's going to bring up WGet commands, and so I can narrow it down, just like we were searching through a file previously, now it's searching through previous commands. So go ahead and give that a try. So FZF is useful that way. Again, there's also a Vim plugin. There's lots of FZF can do. In the title of this video, I wrote out that we're going to work at some commands. Date is another command, which shows you the current date and time. I can say plus percent capital Y for the year. I can do capital or lowercase D for the day of the month. I can do lowercase M for the month. If I do a capital M, it's the current minutes. If I do a capital H, it's the hours that we're currently in. If I do lowercase H, it's going to give me an abbreviated version of the month. So if you look at the man file, which almost every command you have installed should have a manual file. You just type in man and name of the command and you can come in here and you can see all the different options and down here, it gives you a great display of what each one of these little formats can do. And you can see there's a whole bunch of them to display the year, the date and time in different ways. If I cue to get out of that, I can go back up to something like where I had Y and then I can do dash percent M dash percent D. And now I've formatted your month day. I can go day and month. I can flip it around if I want. Instead of dashes, I can do slashes like so. So that's different ways to display the date.  You can also log another format if you want, but this is easy to calculate, time between things, whether this happened before or after something, and you don't have to worry about time zones or daylight savings time. This, no matter where you are in the world, this is the timestamp and you can always convert it later on using the date command to other formats if you want. Also, as I was saying in the title of this video, I talked about different commands and at the end I said more. Well, I meant, I'm gonna show you these commands and more, but there actually is a more command. So I can cat out a file like our people.csv, which will just show the entire file. If I, instead of saying cat, I can say less people and now it's showing me the top of that file and I can use my arrow keys to scroll line by line up and down through this file. I can hit space bars, jump through, enter also goes line by line and then I hit Q to get out of that. So if a file is very large and I wanna read through it, I can use less, but you can also use more because more is less and it's a different command, but it works very similarly. The arrow keys don't work. You have to use enter to go down and space bar will jump page by page and so more, I usually use less, but there's actually also another one that you may not have installed. Those two are very commonly installed, but if you use most, you should be able to, I believe, most.csv. It's similar. You can use your arrows to go up and down, enter or space bar, Q to get out. There's also, you can hit H to get a help file. So, but what's, why would you use most? I don't normally use most, but I have it installed. Why do I have it installed? Because if you have it installed, it's one of the ways, if I did, again, we'll do the man.date. You can see my man page is somewhat highlighted. We got some things marked in red and that's because once you install most, it should start using it for your man pages and color codes it somewhat. There are other better ways to color code your man pages, but that's just a quick and easy way that I just did. I haven't set up anything else for that. So, that's less, more and most. Less and more are very commonly found on systems. Less is the one that I use most and it doesn't just have to be, like I said, we gave it a file, so people.csv, and again, now I can go through this, Q to get out of that, but it can also be piped into. So, cat, this is gonna seem like a similar thing because we're doing the same thing, but if you had some sort of output from another command, you can put it into lesson read it line by line. So, yeah, those are some common commands. And again, this video series is just demonstrating a lot of commands, just reviewing a lot of basic stuff quickly. If you went to my website, filmsbychrist.com, here you can search through my videos. So, you might be able to search for less, although a lot of videos probably have the word less in them, because they say things like less in. But for the most part, you can search through my videos fairly good here. More, but again, then more on multiple, yeah. So, those ones might be a little difficult to search for because their names are so common, but you can find a lot on my, here we go, head, tail and more. Oh, let's talk about head and tail. Those are also very common. So, we looked at less and more to scroll through files, but let's say I just wanna look at the top 10 lines of a file. I can say headpeople.csv in this case, and it's just gonna display the top 10 lines. If I just, and that's the default is 10, if I say dash n5, it's gonna show the top five lines. If you wanna see the top 50 lines, you can say 50, it'll show the top 50. And it's very common, I just want the top line, just one. And then if you wanna go the other way, instead of head, you can say tail. And tail, we can say people.csv, and that's gonna show the last 10 lines by default. But I can say I wanna see the last five lines. So, if you're appending to a log file, this is gonna show you the last five things in there. If you just want the very last thing in the file, you do one. And if you want, you can do more than that again, 10 is the default, but I can say, I can do 60 or 50 or whatever. So, head will show you the top of the file, tails will show you the bottom of the file. And you can tell how many lines you want. So, dash n for number of lines.  So, go ahead and says also C head because it's a similar program. It is part of the core utilities, so that is on pretty much every system, every Linux system unless it's a very, very, very lightweight. Also going back to FZF, I also wanna say that's not just for Linux, it is cross-platform. So, if you're on Windows, Mac, Linux, probably free BSD or any type of BSD, you can install up on that and it is a great, great tool. Anyway, I hope you enjoyed this video. Be sure to check out Films by Chris.com. The link is in the description of the video and as always, I hope that you have a great day.


Good afternoon again everyone and on our panel today we have everyone here has a doctorate which is amazing and brilliant and Samantha is with us she's recently finished her postdoc at University College London's Knowledge Lab and she's now working at the Raspberry Pi Foundation and their research centre at Cambridge University as a research scientist where she's exploring ways to teach AI in schools and we've got Garen with us and he's a Bill and Melinda Gates postdoctoral associate in the teaching systems lab in MIT and he leads work on an open source simulation based research and development platform known as DEX and the rest of the panel are the three professors sorry they're not the three tenors but I know that Eileen has a very good singing voice and she's our regus professor very prestigious post here in the university we've got Regina lovely to have Regina here she's played an important role in this program as she was associate dean for research in wells and of course we've got Bart here and Bart has been a real driving force in this program of work so thank you for that Bart. What I'd like to do now is start with a question which is for the three professors so there were three major themes evolved from this project and that was with learners and the power of language innovative technologies educators and inclusive practice and I'd like to you to tell us about what you think the major take home messages for the academy are from these three strands and especially since the work focused around multi-disciplinary teams so I'm going to put Bart in the hot seat first then Eileen and then Rigging so please take over the three professors wow no pressure Denise I think the one thing we've learned across the 19th chapters is that one size does not fit all in all the chapters that's become really clear that what may work for one group of let's say English learners learning a language does not work for French learners in another country and I think what is for example really powerful by for example the work that Simone has done is whatever we design from a UK perspective may work for our UK learners but it definitely won't necessarily work for learners for example in China or learners who have accessibility needs as Paco has shown so these are my one size doesn't fit all thank you Bart over to Eileen sorry about that I couldn't get my mic to unmute I've been really interested in changing the little breakout group that I had and that slightly changed the nature of what I was going to see I was inspired by the person this morning who said that we need to look at these doctoral scholars and recognize both their ambition and bravery in the way that they approach the work and that came very strongly to me from listening to the four presentations that I had in my section in terms of technology I think not so much conversations about technology many more conversations about what still needed to be done to make open world learning truly accessible and effective and for example able to cope with the global disparity that Simone picked up from her work the approach that Garon took to understanding the different community perspectives even on things like classifiers of emotions that needed to be looked at accessibility in general I mean I think the work that Paco talked to us about in the break says we have done lots of work on accessibility we've raised lots of issues and concerns and developed methods but there's still tons to be done and finally the contribution that we had by video very nice video from Juan he talked to us in quite a lot of detail about trying to unpack learning design student engagement learning analytics and student achievement and I think what comes to me most strongly from the body of work that I was reminded of this afternoon in these particular presentations but is very well represented across the book is the ambition behind the program to make things better for everyone in open world learning and a recognition that we've made some good steps along the way but there's still tons of work to be done and I see that in the careers of the doctoral scholars who've left us they each of the presentations I had was relying on the interesting methods that they've developed interesting and actually groundbreaking methods that have been developed to study these complex issues and I'm so delighted to see that particularly for the people who return to us today that I can only predict a really important future in developing the idea of open world learning and going forward thank you thank you Eileen and now over to Ricky thank you yes sort of following on for that so from my point of view the take home message or the key take home messages the impact that the new technologies are having on learning and on teaching and the implications of this for educators today so I think over the past years we've really been witnessing the development of new learning ecologies which really have the potential to be more inclusive than what we're used to in our sort of traditional learning and teaching parameters educators can really make use of today's technologies to make learning more exciting and also more relevant I think that's really important they can use it to bring the world into the classroom and at the same time move education out into the wild so I think that's that's sort of a real opportunity however they do need the kind of skills to do that that many I think currently don't really have so I think that's sort of one of the issues but I think if you look at the studies done by our PhD students which which are sort of really amazing you'll see how very many really focus on different tools and technologies that are providing examples for this sort of change of how we learn and teach languages and and other other subjects so I think really it's been great to sort of read the the various chapters of the sort of work that they have done and also to hear today about about their work thank you thank you so much a wonderful summary there and I think a great taster and an invitation for people to actually go away and read this important work now I'd like to ask Simone and Garon to answer some questions do you think you could put your cameras on there's Garon is Simone with us yeah I am can you hear me oh good good good yeah there she is so really we'll start with Simone and then we'll move on to Garon and I've really got two questions for you both and one is what surprised you most about the topic you were researching and secondly you know if you were given unlimited funding now your fairy godmother suddenly appeared what research would you like to do to take forward now that you think it's going to really make a difference so if we start with summer and then we'll move on to Garon thank you thank you thank you for your question that's very interesting I would absolutely love to meet this fairy godmother yeah so what surprised yeah what was the most surprising part to give you some context in my research I was trying to explore how online learners learn from those who are from different geocultural and socioeconomic backgrounds how do they engage with different types of learning design elements or different types of learning activities for example instructional videos reading material or discussion based learning activities or quizzes and when I started working on this project my surprise it had three parts if you allow me yeah so first was how much data is available there it's it's just literally sitting there from millions of users who got enrolled in one or the other move and second how supportive the research community is so in this particular context so for example we made some strong collaborations with researchers working at for example Stanford or at Cornell so they were super supportive obviously the data is not exactly residing there you will have to sign an MOU which we did but they are super supportive and third part of my surprise despite the availability of this voluminous data and this amazing amazingly supportive research community how limited research has been done in this domain so that that was the surprise and sorry what was your second question yeah so funding yeah so I've already talked about this mouth watering amount of data which is residing there but that was this that research was conducted in a pre-COVID world and revisiting my research in a post-COVID world could not be more timely and the implications and lessons that we learn from this research will appear more relevant if a replication or for example extension is performed and for that I have two linked thread in mind first and imagine how how amazing it would be if we perform an extension or replication in a context other than MOOCs so for example in hybrid or in face-to-face learning environment and that's something that higher education all around the world has come to rely on in post-COVID world and the second even more useful dimension would be our design-based research where we we use the lessons that we learn from this research and we implement them and we design MOOCs following the guidelines or following the recommendations from my research and then we start a cycle we analyze data from the from the newly designed MOOCs and see what we can do about about it if it makes sense does that answer your question yes it does and it it sort of points away to things we're thinking about in IT and at the year you're about open research and open data and sharing so we've got scalability and we can see across the world what's happened I think you're absolutely right and I I hope you can get your funding thank you can I move to you now please sure thanks thanks Denise um not exactly the prompt but first I just want to express gratitude for all of the fantastic learning that took place within this program and how it's planted so many seeds that have really generated a lot of really interesting work post PhD and in my postdoc but with that said the first thing I'd like to say is one of the things that was really surprising in my work was all of the work that I did in again interviews if you're doing quantitative research find a way to do an interview because you're going to find some of the most gems of surprises there and in one of the interviews that I conducted I showed predictions of a classifier of emotional expression to people about their own communication and I asked them if the prediction changed their mind about what they thought about their own communication and what I was trying to understand was that if we built a classifier that represented some form of a consensus from the community built on the perspectives of the community would that sort of help people work toward a consensus and there was places where I saw what I was sort of anticipating which was I'd show someone like 20 or 30 of their own messages and they'd change their mind about one or two things and they'd be like oh I can kind of see what's going on there and that kind of makes sense to me that was fully anticipated what was surprising was one of the interviews that I conducted someone changed their mind 22 or 20 times like about half of their communication they changed their mind to agree with what the algorithms prediction was and I was concerned about that I was concerned about how much people might just acquiesce to the opinion of an algorithm and not really be learning from it but just sort of saying oh it must be right and I think that that raises some really interesting concerns around fairness transparency accountability algorithmic designs that we really need to start thinking about as we start moving in towards adoptions of AI within learning environments that that sometimes those predictions might just actually become self-fulfilling prophecies and so we have to be careful about what we're predicting how we're sharing and how we're supporting people to interpret those predictions I think that that's going to be a really interesting challenge coming and if I had a magic pot of money to work with I think that the the thing that I'm I'll say is that one of the seeds that was planted in this program was when Rebecca Ferguson invited me to contribute to the innovating pedagogy report where I got to write a report on decolonizing learning and and I see that in an intersection of that style of work with sort of community driven machine learning classifier work as a way of framing and thinking about how I'm working on the platform decks that I'm working on right now where I let communities create their own simulations about difficult social interactions where often there's some sort of a power dynamic like a teacher and a student or a police officer and incarcerated youth like there's a variety of situations where these difficult social interactions take place and then thinking really deeply about like who's participating in establishing what the classifier is considered to be truth and so you can imagine that when there's these interesting power dynamics at play and these different perspectives the student perspective the teacher perspective I think that that was something that I'm thinking about this work that I'm doing from like a scale from the start totally informed by the four P's of the open world learning research agenda and and trying to think about how do we include communities in the process of creating algorithms that are making interpretations about social interactions and how do we get people to learn both where those algorithms can be beneficial and where it might shape one or two of your opinions and also with a sufficient level of sophisticated understanding so that you don't just agree with every prediction that's shown to you and so I feel like that's a challenge where if we want to benefit from some of these innovative technologies we need to help build some level of sophistication in sort of the consumption of those technologies and the strategy that I employ in doing that work is by empowering communities and shifting power to communities to be participants and sort of community-centered research and development around both the materials that are being used as well as the measures that are being used to make predictions about what's said within a simulated difficult social interaction so thank you in fact you've answered the next question that I wanted to pose to everyone so thank you and so we'll have all the panel back on board and Garon has actually given us the answer to the next question which I'd like to ask you all to address which is what is the grand challenge now for open learning and I can see Eileen and I can see Bart on screen then we'll go to Samar and then we'll go to Regina so take it away Eileen yeah I'm not sure I think from what I've been hearing today that the grand challenge is to properly unpack what is meant by accessibility to learning I think we've you know we've talked about providing access and we've talked about learning design and we've talked about student engagement attitude all sorts of things but across all that you know with this is the 10th year of the MOOC this year since the first of the X MOOCs was launched from Stanford and I think that the hope that was behind some of that activity that by providing free access to materials all problems in education and society would be solved it's obviously that hasn't happened what has happened is there's more access to more open material and the challenge that we have as educators is trying to make sense of the research quite a lot of research that's been done in the past 10 years to to further I don't want to say the level the playing field that has terrible connotations but further make the kind of inroads into inequalities in education further develop work that helps the remove the barriers to learning across the globe just a small one thank you thank you Eileen that'll keep us going a long time right off we go so if I go next if I take a dark perspective I mean I think over the last five years what we have seen is that the role of experts and the role of knowledge has been really heavily criticized and you know if you now say oh I'm an expert in this then there will always be someone who will find well who's who's that you're saying that you're the expert and I hopefully can trust my doctor for example but there are lots of people who don't seem to trust the knowledge that is out there on the web so I think from a dark perspective open world learning has opened a fantastic can of worms that you can find your truth anywhere online if I take a positive perspective I think what we need to do is to how to find out mechanisms and ways how we can effectively train the next generation of educators researchers and learners to make sense of this so that they can really try to understand the powers of open world learning but also be critical if something is stated on the internet that may or may not be necessarily true so I'm handing the ones to Rikina thank you yes and I actually want to talk from my position as a language educator and sort of shift things a little bit because I think there are a number of studies included in the book that focus on language learning and teaching and I think that's really really good because if we look at the situation in the UK there is a really worrying decline in the take up of languages and I think you are all aware of that so many adults in the UK only speak English unless they have a migration background and so possibly have access to another language and so there are lots of people who have little access to the sort of benefits that exposure to a second language can bring and those are cognitive effective social and economic benefits and I think Brexit to sort of bring that in as well hasn't helped the UK's international focus is really shrinking and all of this results in a quite a worrying narrowing of people's attitudes and intercultural understanding and I think that links a bit to what has just been said and there's also a narrowing of opportunities so for me the sort of challenge really lies in encouraging people I don't know probably especially politicians and educationalists to actually make a push for languages and just make sure that the importance of being able to speak a second language or several second languages is recognized so that's my sort of pitch thank you so much very valuable is Regina and summer would you like to close this question now please yes so grand challenge for open learning so in my opinion and I might be wrong obviously sustainability but that's not new so the challenge this challenge was always there and one of our liver human fellows actually Dr. Nguyen has done some amazing work on this students engagement in open learning environment making open and accessible learning resources is one thing and keeping the learners engaged with those resources is another thing so yeah sustainability keeping them afloat readily available and engagement in my opinion is a skill at end thank you I want to close the question with a quick fire answer and we'll go in the order that we had just now so we'll start with Eileen so I want you in two three words now so that we can leave the our visitors our participants with some keywords let's say reverberating in their ears about what building on what we've got here and we've done and what areas of research should be funded going forward now Eileen if you'd start please thank you I'm going to steal Bart's I'm going to say read capturing truth and reason in the open world learning community thank you Eileen privilege of going first I have a quick rethink Bart I'm going for unique learning trajectories thank you Regina okay and I'm going for today's digital transformation especially in education and a pedagogy of multiliteracies thank you thanks to summer and then to uh garyl yeah I'll go for innovation and sustainability let's go innovative thank you and then I'll I'll have the final word with uh we should be focusing on community driven learning thank you all so much thank you for being such good sports a very interesting panel and also not only that really thinking about these big issues which we all need to be addressing and especially in the OU now with our big focus on societal challenge but thank you all so much it's been such an enjoyable afternoon and I'd like to ask you all to um show our appreciation for our panel and I'd like to hand over to Bart now to close the afternoon thank you so much yeah thank you so much to all the panel members and the amazing chairing by Denise and thank you for attending this this event we've seen people from across the globe again attending and we know that lots of people because of the limitation of time zones we are currently at nearly three o'clock UK time which is not very convenient for our friends for example in Australia to join but I know that they will watch the recording so thank you also for those who are watching this afterwards also I'm really grateful for all the Leavium students that were here today but also who were unable to make it because of time zone issues and the 30 plus supervisors have done a fantastic work and I also would like to in particular thank James, Michelle and Christina for the amazing support in making this this event possible of course I would like to be very grateful to Leavium sponsoring 15 out of the 18 students and I also am very grateful for the three sponsored students by the Open University again the book is available from now on words today and if you are interested in the work we're doing we will keep posting all our amazing work on our website it.open.ac.uk so thank you so much for joining and well see you somewhere on this open planet bye for now


Hey guys, it's Nate, AKA The Foot Accountant. Welcome back to the channel. We are here today looking at the upcoming promotion of FIFA Ultimate Team called Team of the Year. It's arguably one of the top promos in FIFA, and I want to take a look at what happened last year, what could happen this year, and just kind of take a look at the promos a whole before it comes out and talk about what you guys could see a little bit on the market. We'll do a later video in the next day or so talking about more direct things on the market and what you could see, but this one's just gonna be more about the promotion itself, talking about the SBCs and the content that we do get and the cards of course that come out during Team of the Year, which is like the main point of Team of the Year is getting those insane, insane stat boost, 99 rated cards, like every cards over like 95 rated, basically or 93 rated, it's crazy, but that's how awesome Team of the Year is. So we're just gonna talk about this promotion today. I know that right now we are not at Team of the Year yet. This comes out on January 6th, as it states down here at the bottom, but I'm putting this out early for you guys just so you can get a nice idea of what's going on. And of course, I'm not currently around right now as many of you guys may know. I'm on a little bit of a trip with my family, so I do not have the ability to take all my FIFA stuff with me. So that is why we're pre-recording this and I wanted to get something out for you guys that I can put out kind of in this middle timeframe when I'm not around, but also talk about something useful in FIFA and help you guys out with some information and that is looking back on Team of the Year. Now, obviously this voting, Team of the Year voting ended a few days ago, so we can't vote anymore. Now, they did it differently this year than they did in past years. I don't know if you guys remember FIFA 18 or FIFA 19, they had the ballot boxes where they would send the boxes to the YouTubers or to celebrities or professional athletes and they would put those, actually they had specific little card items, they would send them a physical box and they would like tweet at EA or send the box back to EA with their official Team of the Year vote and they would do it with their community so EA was like, yeah, it's a community vote, right? Well, kind of, I guess, but this year it's a true, true community vote because everybody and anybody who wanted to vote could click the link and go vote on these cards. We had all 55 nominees presented to us with the option of picking three attackers, three menfielders, four defenders and a goalkeeper. So it was cool that the entire community got to vote this year instead of having the ballot box system. We also got these nominee cards in packs. Of course, they're out of packs, they're rare, they're really fun to trade with. A lot of you guys know that at this time so it was cool to get those in packs. But the Team of the Year voting has ended so we're now, it's just kind of them telling the votes and they're gonna put out the Team of the Year for the starting 11 and we'll probably get a 12th player like we did last year with Neymar as well. So I'm gonna talk about that a little bit today as well. But again, I wanna just kind of go over the timeline really fast. The final Team of the Year vote will be announced on January 6th, which is a Monday, which should be like a week from now. And then those special Team of the Year items will be released in packs for a limited amount of time. Now the way that they released these is really interesting as well. I'm not sure if they're gonna do it the same as they did last year or if they'll mix it up. But last year, basically what they did was they dropped them for like one day at a time to start it off. When they've done this in past FIFA's before, last year they started with the four words on day one, midfielders on day two, and then goalkeepers and defenders on day three, and then they put them all into packs after that. So you can see right here, the four words came into packs Monday the 7th of 2019. They were in packs for one day, the midfielders came out, then the goalkeepers and defenders came out until the 10th, and then the full team was in packs over right here. The full team was in packs from the 10th to the 14th. So basically it is a one week promotion Monday to Monday, and either the attackers, the midfielders, goalkeepers and defenders, they're all out at individual times, and then the full squad is released in packs as well. So you really have to be careful with when you try to open your packs, right? Because they do this every year, and I think they switch up the order every year as well. Last year they did the team of the year forwards first, and after I'm not mistaken, in FIFA 18 they did the goalkeepers and defenders first. So I would be curious to see if they flip that around this year again for FIFA 20 and rock with the goalkeepers and defenders in the first day of packs that are being opened, and there would be five team of the year cards in packs, of course, then they moved to three in the midfield and three in attack. So we'll see what happens with that, but that is kind of the order in how it goes, right?  Personally, I always just wait until the full team is out in packs because why open packs when there's three team of the year cards possible to be packed when you can have all 11 in packs, right? You never know what you're gonna hit. So a lot of people wait to open their cards until the full squad is in packs unless they change it up this year. That's probably what I would do for you guys as well. I mean, of course, wait until they're all in packs and then open them up. There's a few days where they do that. Of course, they're running lightning rounds like every single day, because people wanna pack these cards and people drop mad money in this game. I mean, for goodness sake, they dropped lightning rounds recently in FIFA when all we had in packs were prime icons. Prime icons were in packs, and they ran the lightning rounds. And you know how many people pack those? Like none, like none. So the pack went on those as crazy low, which is crazy, but they love dropping the lightning rounds this year. And thinking back to Black Friday and seeing just how many packs there were, I'm pretty sure, if I remember correctly, there were like 250,000 of the ultimate packs. So 250,000 of the 125K packs during Black Friday and that lightning round sold out. So I would expect some massive, massive pack numbers again on Black Friday. And that will again, we'll get into some of the packs and the market stuff. We'll talk about that in the next video. But again, looking at the team of the year cards, they do are out there basically in packs for a week. Some of them, you know, they're not all in packs for a week as some of them come out one day and they're out and then they come back in when the full team is in packs right there. So those are the cards. Then last year we did get a 12th man, basically, and we had a vote where we got a team of the year nominee card and we had to choose one. Or yeah, it was like a player pick, I think, and we had to choose one to turn it in for our votes. And it was kind of between, people thought it was gonna be Namar or Pogba and last year Namar won, which I'm glad he did because that card was fantastic to use for me towards the team of the ultimate team. But again, this year, I would imagine that we would get a, if not one, excuse me, maybe a couple nominees that could win the vote. But I would at least say a 12th man, I think would be very, very possible. So I would expect that to be coming out in some shape or form. And you know what, to be honest, I do think we could get some more nominee SBCs as we transition to talking about some of the SBCs we got last year. I don't know if you guys remember the Centurion SBC, which was the David Silva, a special version of David Silva, which was, they used the player moments or the, at the moments, they used the nominee card design for some of these cards, but they chose players that had a record breaking season. And I think they technically were team of the year nominees in the voting. So we had a David Silva SBC last year. We had a nominee Bale, SBC, and also a nominee Versalco for their, for the UCL final game winning goal for Bale. And then consistent team contributions for 87 rated Versalco. So I would say that we could expect some more nominee SBCs, which basically, for me, would look like these nominee cards that we had to vote on, but they give them maybe just the boosted stats, right? So they have a nominee card that's on the market, but then they give them like a nominee, or maybe they even use the team of the year card design. That would be crazy if they did that, to use a team of the year card design SBC for some of these, like the cornerstone, the champion, picking some of those guys that were in team of the year voting that didn't get in. I do think we think that we should see some of those. Other stuff that we saw during team of the year, and this was a crazy thing last year. We had solid content during team of the year last year. We got the upgrade SBCs that we wanted. We had daily pack challenges. We had icon SBCs. And of course, we did have, we had some upgrade SBCs other than just the leagues. And then flashbacks as well. So of course, I think they dropped this on day one last year, it was either day one or day two that they dropped. Well, at first of all, they dropped a flashback Tevez on day one of team of the year, which was cool. A lot of people did that SBC. But we did get these upgrades, right? And these upgrades were out for basically the entire duration of team of the season. And it was the good upgrades. Like I mentioned, a premium gold pack. So there was the Premier League upgrade and the premium Premier League upgrade, which was a 25K pack basically, the 25K pack of all players, 12 Premier League players, three rare. Now, if we get these packs this year, GGEA, thank you very much. And I doesn't say what this squad, yeah, let me look and see what this squad required. You had to have 11 rare players. So rare players definitely went up to like 1000 coins for some of those leagues. And when we start to talk about some of the leagues and which of the rare players go higher, you look at League Un. If Neymar and Abape both get in team of the year, you will see those rare gold cards in the market shoot up a lot, because there's not as many rare golds in League Un. But Premier League and La Liga are the ones that people do the most because you have your highest chance of packing team of the year cards from those. But I really, really hope that they put these packs out again. The Premier League upgrade and the premium, like EA, please just copy paste your content from FIFA 19 and put it in FIFA 20 because these SBCs are the ones that we want. Keep the requirements the same, right? 11 rare players, I'll pay the price. I will do that SBC to be able to pack a team of the year. Last year, I think I spent around like two and a half to three million coins doing upgrade packs during team of the year. It's like packs on packs on packs. It's like all we're doing. You're trying to like trade on the sides that you can make coins to do more packs as well. It's crazy. But these upgrade packs, I hope and pray that EA releases the same ones this year because these are really good packs and they're fun to grind. We had an 82 plus pack as well that was thrown in there along with the upgrades, which was cool.  And the flashback cards last year during team of the year were phenomenal. The Tevez SBC was like, it was a really good card and it was priced accurately for that type of card. Now obviously he had really insane stats, but I think he only had a three star weak foot, right? Three star weak foot, four star skills. So I remember a lot of people did this card last year and it worked out for some because you could actually kind of, you could craft your those cards last year with the upgrade packs. So if you were putting money into upgrades, you were probably getting some higher rated cards and that allowed you to go out and do either some of these team of the year nominee SBCs like David Silva, or you could work on some of the flashbacks, which we got flashback Ibrahimovic last year during the team of the year promo. I think a lot of people don't remember that, but the two like SBCs that stand out to me the most, I think were the team of the year nominee Bale, which was very expensive early on. And then flashback Ibra was a decent value when he first came out. A lot of people did him. I did that card. People used him for the rest of the year. We had flashback Casias as well, which was one that I think I might have grinded to and crafted because of the upgrade packs. But yeah, that's basically what we got last year during team of the year. We got the daily team of the year challenge, pack SBCs, which I hope that comes again. The good upgrade packs and 82 plus upgrade and then the flashback SBCs and some of the other team of the year SBCs as well, the nominees. So is there anything different that I can see this year, possibly a team of the week SBC. Last year we got a team of the week SBC over the Christmas time period when there were wrote to the final set two cards that were in packs. Now I don't know if we're gonna get wrote to the final set two this year. I'm honestly not too sure. We haven't had a team of the week SBC for a little bit of time. So I would be interested to see if we do get a team of the week SBC. I would expect probably, I know I'm recording this video early but another league SBC possibly to come to that timeframe. And we're gonna talk about these in a video soon too, because these cards, these SBCs are used a ton during team of the year for people that wanna grind tradable packs. If they don't wanna do upgrade packs people will go and grind these just to get packs. They honestly will. And even before team of the year they're gonna grind these packs to just get packs stocked up for team of the year. So we'll talk about those league SBCs at some point as well. But again, that's kind of what team of the year is about. I mean we looked at the squad. We looked at the nominees from this year. I mean the voting is in so we can't really change any of that. But that's kind of what we can expect for team of the year, right? Obviously the big cards are in packs. It's a huge promo and EA realizes that. There's tons of people that are new to the game in this time period as well. Get the game for Christmas, get some FIFA points for Christmas or just have extra time to play the game for Christmas. It means more people on FIFA which means that people can spend money in this game and EA drops content for people of all types of coin budgets and stuff like that. So team of the year is a fun one, man. It really is a fun one. And hopefully this helped you guys kind of get your minds wrapped around team of the year. Maybe remind you a little bit about what we could see. Some of the content, some of the promotional stuff that we should see for team of the year in FIFA 20. If you enjoyed it, smash the thumbs up on it. Comment down below if you have any questions. And of course, subscribe to the channel if you are new. It's been Nate, the foot accountant. Catch you guys later. Peace out.


Welcome to this video which should guide you through how IEEE online courses work. You should receive an email containing a link to log into your course, plus a user ID and password. In the email, right-click on the hyperlink and select Open in New tab. What you see here may vary according to the type of computer, browser and operating system you're using. But the principles throughout this video will be the same. The login page should open in a new tab. Click on the tab for your email again and select the user ID. You need to make sure that there is no space either before or after the text you select here, as any spaces may cause problems when you try to log in. Right-click and copy the text back in the course control panel, paste the user ID into the upper box. Go back to your emails again and select the password, again being careful not to include any spaces. Right-click and copy. Clicking on the course control panel tab again, paste the password into the lower box, then click the red login button. You should now be in the home page of your course control panel. Read the information on this page carefully as it explains how the course works. You then need to click on the Instructions tab in the red bar at the top. Again, it's worth reading through this information in detail so that you know what to expect during the course. Bear in mind that the instructions may not be exactly the same for your course as specific details vary. The next step is to have a quick read through the introductory unit before making a start on the course. The units are in PDF format and are available either within your control panel or to download. Firstly, you can read it online from within your control panel. Clicking this button next to the unit will open the PDF directly below the header. You can navigate from page to page by clicking the arrow buttons to the left and right. You can also read the unit in full screen mode by clicking this icon in the bottom right-hand corner. Bring the document back to its previous size either by clicking the Escape button or the icon here. You may want to download the unit to your computer so that you have a permanent copy. You can do this by clicking Download at the side. This will open a new page where you can download the file by clicking the icon at the top. This will download the file to the folder on your computer where your downloads are usually saved. Having reviewed the instructions and introductory unit, you should be ready to make a start on the course itself, which will mean reading through the first unit. As with the intro unit, click Read Online next to Unit 1. Once open, read the contents thoroughly. Take your time with this. You may want to print out the unit so that you can read a paper copy and make notes. How to study is up to you. Once you feel you have grasped the contents, you should work your way through the task sheet at the end of the unit to reinforce the ideas covered. To do this, you will need either to work on a copy you have printed out or re-type the tasks in a new document and answer them there. After working through the task sheet for the unit, you should be prepared to take the unit test. Go back to the top of your control panel and click on the Test tab. As you can see, this takes you straight to the unit 1 test. How you work through the test is up to you. You might want to read all questions first before starting or you may prefer to work through the questions straight away. There are no trick questions in any of the tests and all the answers are based on information in the units. You will obviously want to spend a lot more time on your test than we are during this demonstration. At the end of each test is a unit reflection where you need to write a brief overview of the content of the unit and what you feel you have learnt from it. This isn't included here. Once you've clicked on an answer for each question you should then click the red Submit Test button at the bottom. This will take you to the results for that test. As well as giving you the correct answer you will also see advice on where in the unit you can see more information about the right answer or a brief explanation of how your answer was incorrect. Scrolling to the bottom of the page you'll see a graph with a summary of your results. This graph will be updated as you progress through the course and will give you an overall score. You will need to score 75% or more overall to achieve a pass on the tests section of the course. Your overall score is also shown in a black box towards the top of your course control panel. Click the Units tab in the red bar at the top of the page. If you scroll down the page you'll see that as you have submitted the test for Unit 1 Unit 2 is now available to you. We now go through the same process for Unit 2 and for all future units reading and assimilating the content taking the online test and moving on to the next unit as it becomes available. You will now see your overall score at the bottom of the page Assuming that your overall score was 75% or more clicking the next button above the results will take you to the final part of the course the summative task. The summative task will conclude your course. Read the instructions carefully as they will tell you what the summative task should consist of and provide you with a list of possible topics. You should work on your summative task offline in a word processor on your computer or device. Save it somewhere then copy and paste it into the summative task form you see here when you've completed it. This way if your internet connection drops at this stage or there happens to be a technical problem you won't lose anything. After a final review click the Submit button at the bottom of the page. This will take you to a page where you should enter some personal details for your certificate. Give your name exactly as you would like it to appear on the certificate in the top box. You should then give your certificate preference in the next row. Next is your full mailing address for the certificate including the country. This can be anywhere in the world. If the address you are providing is for a country that has its own alphabet or script such as Korea or China please send that to us via email. On completion of the course your certificate will be sent out via registered post. This can take 2 to 3 weeks to arrive so if you need to receive your certificate more quickly you will see a DHL payment option on the following page after you click the submit button. You should now have reached the confirmation page and your summative task will have been sent to us. Do a quick check of your certificate name and the delivery address here so that you can email us in case of a problem. Once the summative task has been reviewed and deemed satisfactory your certificate will be printed and sent out to you via registered post. That's the course complete. There's nothing more you need to do at this stage unless you'd like to receive the certificate via DHL in which case you would need to click one of the payment buttons here. You still have access to the course materials until your deadline so this is probably a good time to download the units and videos if you haven't done so already. Please feel free to contact us via email should you have any questions about IEEE course procedures.