Hei, Colleen. Thank you. Hi, good morning everyone and welcome to my presentation. Now, what I'm going to be looking at, the basis of this is my experiences of using Collaborate Ultra as primarily a lecture substitute as part of my teaching, but I've also extended the remit of my abstract a little bit to throw in some other ways that I've been using this particular technology that might be of interest or a benefit for your own practice. OK, so I say I'm Polly Monroe and I'm a lecturer in HRM in the Glasgow School for Business and Society, which is part of Glasgow Caledonian University. So this is basically what I'm going to be looking at in my presentation. What is Collaborate Ultra? What can I use it for? Some staff reflection, student reaction and lessons going forward. So first of all, not everybody's familiar with these types of tools and it's a tool that's embedded within our VLE. So what we know as our GCU Learn system. So it's, I describe it as Skype-like because it allows you to communicate with students or anybody else in a sort of Skype format where you could have video, almost like video calling where you can have audio and it has a chat feature as well in it. So it's quite a multifunctional tool that is similar, you know, in a lot of ways to Skype. And the additional benefit of it is that you can upload lecture slides. For example, today includes screen sharing where you can actually show the window in your own PC to your audience. You know, for example, I found that quite useful if you want to show a diagram for students. Students actually find this really, you know, very functional because it means they can still make an opinion, they can still answer a question, they can still make a comment, you know, without feeling that, oh, I'm in this big lecture hall and you know, I don't want to speak in front of everybody. So say chat messaging and polling as well. It also has a function that you can use for little opinion polls. And what I've been using mostly is recorded sessions. You can save them and make them available through your VLE. Okay. So I'll sort of talk a wee bit more about how I've been using these functions in what I've been doing in my own teaching practice. Well, primarily what I've been doing is live lecture sessions. Now, this has comprised of me sort of delivering my lecture live through this tool. Now, this is a lot of benefits for staff. For example, time management. I might only have, let's say, one lecture that day. Now, this tool allows me to deliver that from home so that I can maybe be productive during the day, get other things done. And an interesting side effect of it is you're much more relaxed. You know, you can maybe lie on the couch, your cup of tea.  But you have to remember your headset to mute it when you're drinking your tea. That's what, you know, sort of several weeks of practice sort of told me. So doing that, you can also pre-record your lectures without an audience.  Now, a lot of people use Camtasia for these types of processes. But I found that using the actual tool within your VLE is so much simpler than a more complicated Camtasia. Summer revision sessions has been an absolute real find for me because when you have students doing resets, for example, they might be international students. They might, you know, they might say, well, why should I come over in the summer for a session for it's maybe going to last an hour? I have a lot of part-time students as well and they can't always attend, you know, during the day if they have work commitments. So arranging live sessions, and I have done for some of my part-time students in the evening, means that they don't miss out in any sort of important information. And what I've found is a student is far more likely to tune into the session from home or anywhere else that's suitable than actually physically come into the classroom during the summer holidays. You could also use it for guest speakers. You could, you know, you send the link and the guest speaker can use, you know, the system as well but the only problem that you can have is their IT system might not allow them to do it. I've had sort of conflict software conflicts in the past. You know, I've tried to set up, for example, a Q&A with an industry expert for the students, you know, things like that. So it's kind of, that can be a wee bit trial and error. Dissertation meetings, it's great for dissertation meetings because you can record the session. There's no ambiguity as to your feedback. If the student, and it means that the student instead of maybe constantly emailing you for clarification for this or that, they have a record of what was said. And what I do is I put feedback on their chapter, for example, turn it into a PDF, upload it and we discuss it. They can see all the feedback and the document on their screen and I see it online and we have a chat about it. And it means that, for example, their time's not being wasted in neither's mind because they might only be able to do one hour in that day, I might only have their meeting in that day. So it means that you can manage their time more effectively. And of course it was good to see, they all see Organising Committee we're using collaborate as a very effective tool in order to organise the activities and processes for the conference. So you see how it has a lots of different dimensions. It's quite a multifunctional tool once you really start to explore what it can do. So this is what I call Collaborate Ultra in Action. Now this is based in my student experience, my teaching practice. Now in my sort of timetable, I have a fourth year semester B undergrad module. Now what happens is by week five, week six, they start to disappear because as soon as you say the word dissertation, it's like, ah! I need to be working on my dissertation, I need to be working on it. So lecture attendance drops off a cliff because they're prioritising the dissertation and they're missing out in a lot of valuable lectures as part of their module. So what I decided to do was do live sessions in their lecture slot that were also recorded. So they had the option to appear, to come to the session virtually live or they could listen to the recorded version. And my third year undergrad module was mainly direct entry students. I recorded all the lecture material for them so that they had something to go back to. My postgrad module, I want to use, you know, for more recording of the sort of the theoretical aspects so that I can use more class time to develop more practical based activities so that we're less death by PowerPoint and more sort of learning by doing. So say I've already used it to streamline dissertation meetings and it's also a very effective reflective tool for myself because when you listen back to your own recordings you have to think about am I actually explaining things properly? Am I, what tone am I using? And the unfortunate thing for some of us in the west of Scotland, you know, what gratuitous colloquialisms am I using that an international student will say? What? You know, and it helps you to reflect in your own practice that you can go back and see, you know, what where you need to improve and are you actually producing the most effective learning experience for your students? See, what I found though, as someone who likes to bounce off the audience, not literally, but likes to the rapport and the, you know, sort of being in contact with the audience I found that quite difficult to adapt at times to online because as I say, I'm lying maybe on the couch of my wee cup of tea and I'm talking to nothing. See, because I like the audience effect where you can say a little bit of rapport, a little anecdote here and there and when I listened back to the recordings I thought you're awfully serious, you know, and it didn't sound like me. You know, apparently I'd put the speed to 1.5 so it didn't sound too nasally, apparently. But there we go, my elocution for me. So, you know, that I found that was quite difficult so it's not something I would like to do all the time if felt it fitted this module and the particular students because we also have a very diverse student group now. We have more mature students who maybe have childcare or other caring responsibilities as maybe our other students. We have students that maybe say I'm coming from, let's say, Ayrshire and it's expensive to travel. So if more of my materials online then that will save me some money and I'm really pleased about that. Our international students, you know, say, well, what we like is we can go back and back to what you were saying so we can pick it up better. So say, and especially as I mentioned earlier there's no ambiguity regarding dissertation feedback. There's no, I'll bet you said, I'll bet you this, that it's all there as a record. So say, as I've said, you know, it makes you more aware of yourself as an educator. And that's why it's an interesting concept. If we, you know, is this how it's going to go? You know, we're going to actually move away from more face-to-face. Are we going to do more online?  Now, student views, as I said, this is a sort of summary of what they said. They thought it was great for their time management, re-access. They could be interactive with the chat bubble because what I did was I switched off their audio.  And if you've got maybe 30, 40 people, it's not a good idea. So, you know, they did that. So they asked questions through the chat messaging. Some didn't like it. Now, you're always going to get that. You can't please all of the people all of the time. And they found it harder to engage. They thought, well, it's online. I'll look at it next week. Or I'll look at it next week after. And they never look at it. You can't, that's inevitable. You can't, there's no sort of magic bullet that's going to suit everybody. I mean, here it's just some of the feedback examples. We are not going to read them out word by word, but you can see, you know, that one of the key themes was being able to re-access the material because sometimes in a lecture hall you can't retain what's being said, especially if there's distractions and all the rest of it. So they find that really useful. But of course, you know, to give it a sort of a balance, there's some would like face-to-face and recorded as well, which is resource implications, you know. You know, and some people say, well, maybe a 50-50 split would maybe be a better way to do it. Now, just to kind of sort of finish up, what I found was one of the biggest barriers was staff who maybe felt they don't have the confidence to use these things. There's the thought of, if it goes wrong, I don't, I need to be seen to know what I'm doing and if it doesn't work, I'm going to look stupid. And if the students don't like it, it's going to impact on our metrics. So, you know, sometimes institutions can become a wee bit risk averse and make sure it's for the correct student group. Don't just blanket apply it to every student that you've got. Some students you just would not work for and recognise that you're not going to please everybody. There's always going to be somebody that won't like it and it's not an easy option. It's actually, it can take you longer and more thought to do. But I would say, do I have any regrets about doing it? Absolutely none. And it's something that I hope to develop in the future, you know, to try and enhance the student experience where needed. Okay, thank you. Thank you very much for that polling. So just an opportunity now if you've got any questions or comments in the room with this. I'll use her over. We do have some that have come in, come in through Vivox. So one was about using the platform for a lecture capture but I think you've addressed that just as that question came in. Do you use a flipped approach? So not reducing the face-to-face time but using that time for more application of knowledge? Well, I think it also depends on the actual module on the student group. For postgraduate level they like, you know, more of a kind of a practical focus because HR is a very practical discipline. So if they've already primed with the theory beforehand then that gives them something to think about and then to focus more on the sort of practical activities. But for maybe other undergrads, you know, that I would say that, you know, it's good as a reference point for them and you maybe wouldn't do as much sort of flipped classroom activities but it does mean that you can maybe go a wee bit lighter in the heavy theoretical aspects, less powerpoint. We have another question there. Do you have any evidence that, oh, that non-attenders access the recordings or did they actually join live? Yeah, well, how we do it is our dashboard on our VLE allows me to look at the statistics for each individual student, you know, to see how many times they've accessed each particular item. So I have a full sort of statistical sort of breakdown of those that are looking at it. Maybe not join in the live session but are actually viewing recordings. So yeah, I have those. We're able to access that yet. There's a question there about Office 365 and the use of Microsoft Teams. I guess maybe that's why Collaborate Alter and not one of the other tools. I've actually never used the M365 so I wouldn't be able to comment on that. But I mean certainly if it was a tool worth exploring then yeah, something I would certainly look into. So I think we may be of time for one more if there are any more questions in the room. No. Yeah, some people commenting just a really useful tool for professional services staff, two to save time and travel. I think we've all been there in the car and are ready to another meeting. And yeah, thank you very much. So just a round of applause please for polling. Thank you. And I'll ask the next speakers to come up.


Thank you for the introduction. This is Sneha and I'm going to be talking today about leading in a world of constant change. Before I start, I would love to quickly introduce myself. And then we can talk about how exactly are we going to lead in this world of constant change. I grew up and studied in India specifically in Bangalore. I grew up in a family of writers, both my parents being noted Canada writers. They've always used creativity to drive focused results. I moved to the United States to pursue my masters in CMU a decade ago. And I've been leading strategy for company like Sears, Walmart and currently at Sephora. In Sephora, I lead all of the product including digital stores, data and marketing technology. I strongly believe that awareness is the first step towards making a change. I'm an introvert by nature and I'm in the journey of figuring out how being an Indian introverted women, I can navigate in this big technology world and hopefully add a little bit of value in the right way. Having faced this myself and being aware of others experiences. I hope to raise consciousness of the basic biases that women face in this environment, any environment, to ensure that we not only overcome the same together but work towards eradicating it. I strongly believe that the pen is mightier than this word and I intend to keep it that way. So probably if I was not in the technology space right now, I would be a writer or a chef, riding myself away in some secluded mountain space in a cabin. That's a quick intro. Now let's jump in to what we're here to talk about. So human beings are very resilient and if the pandemic has taught us anything, it's the fact that we can adapt to any change. But we really didn't need the pandemic to tell us this. For example, like being an introvert, I totally appreciate working from home and I think my pandemic puppy also does too because he loves the fact that I'm here and I'm spoiling him all the time. But apart from just the pandemic, I think resilience is an innate human capacity that can be learned and developed in anybody. So all people have the ability to develop the skills that will put them on the path to resilience. According to research done, resilience is the human capacity to navigate and negotiate culturally meaningful resources to sustain our well-being. So it has to do a lot with person's ability to make plans, follow through with them to problem solve and to manage impulses and feelings. Resilience is more than a skill. It's an adaptation. So we understand also that it's a process, it's a journey that you just don't wake up one day and you're like, okay, I'm resilient now, right? You go through a lot of experiences right from your childhood that continues throughout your lifespan. Our lives are constantly evolving narratives and so is the pathway to resilience and the equally important parallel process of learning through these changes. While I was thinking about the statement of like, hey, how resilient are humans one thing that I was pausing and reflecting is what are the incidents that in my life that I have I can say that have placed me where I am today. I know there are many, many such incidents, but I picked a few to share with you today. I'm sure each of you have your own journey and it might be an interesting exercise to go through this to identify a few of them to just show the process that you have taken while you were on this path of identifying change and adapting to the changes that you went through. One of the earliest memories I have was probably when I was eight years old and my mom decided to go back to college and do her master's in arts. My mom was a housewife and before that and you know, a lot of things like I would say spoiled my sister and me because she made sure that everything was happening at the right time in the right way. So when she had to go away for a couple of months and we had to rely on dad and sister to kind of tend to ourselves it was an interesting journey. I'm sure it was much more interesting for my mom, but at eight years old I know the whole world revolved around myself. So I remember how we struggled a first few days just to cope up with getting ready, cooking breakfast, making sure we were on time and the realization that a lot of effort went in to make things the way they are and it didn't just magically happen but it was mom actually doing all of that in the background. I loved instant noodles when I was a kid and I always thought I could eat three times a day, seven days a week without any issues but soon when you realize that that's the only thing that's available because dad is not so great at cooking and it's cold you soon realize that instant noodles is probably not the best thing that you could have. I missed a lot of delicious food that my mom was kicking and I think the point that I'm trying to make is in spite of all of this we adapted. We found a rhythm, we made sure that ultimately the house didn't burn down. Of course we were glad when mom came back but that was one of my earliest memories of how a change kind of made us realize that this is what it is and you've got to deal with it in whatever shape or form that suits you best. Moving on I think the next memory that I have is of me coming to CMU to do my Masters which was a change at so many levels. I remember the first few nights when I was thinking what the hell have I done and where have I landed. I didn't know anybody here I didn't have family to help me get settled in but I guess what kept me going was the fact that this was part of a bigger picture and something that I chose to pursue. From learning the lifestyle here to not spending too much because you know you're still in the mindset of converting dollars to Indian rupees bearing the cold cold cold pits for winters to looking for a job because not because you just wanted to work because you needed it to stay in the country. Just the pure number of options in the grocery aisles which was pretty overwhelming and also meeting so many people with such diverse cultures. I was so overwhelmed the first few days and I remember calling my mom you know a few more times than I usually do. I don't talk too much too often so when I called her you know at night and then I called her again in the morning. She has this unique way of grounding me by saying you know we just slept in the night there's really nothing to talk about after eight hours. But she also kind of shows me the mirror all the time and saying that you know you're not the first person going through this. You made this choice because this is what you wanted to do. So get to it and get to you know what you wanted to achieve. I have moments when I question the decisions that I make but I there's always a bit of me that looks at the future and shows me that you know this is just a step towards helping me grow. As I mentioned I think there's been many many instances where you know I can go back and reflect on life changing moments for me that either changed the way I think or defined me the way I am today. Being an Indian woman although we are progressing very quickly there is still a social idea of when you need to get married or settle down. Thankfully my parents version of settling down was a little different and maybe it's because they read a lot and they have a pretty open mind. For them it was being content happy financially stable and just continuous growth. Because of this my version of settling down was buying a house and getting a dog. I did have a dog when I was a kid but I never realized that he was so well behaved and so good because all I had was happy memories of playing with him and you know the nice bits of it because my sister used to spend hours and hours behind the scenes training him. So when I got Leo during the pandemic in the first few months were hard because I had never been through that process. The party training the constant biting destroying of the furniture. I was like oh my God like what did I do. I don't think in general I'm a very patient person but during those times I think the level of my patients changed drastically. But I soon realized now when I look at him that it was all worth you know all the struggles that I went through because now I can't live without him. These are a few personal memories that I'm sharing but there are along with many health concerns and other things as well but you know you just don't learn to live with the changes you adapt and you make it part of your life because you're not just surviving you're thriving to make sure that your journey is the best that it can be because we all know life is short. The one thing that my dad constantly reminds me is how these experiences kind of make you stronger. There is a saying in Canada which is probably one of my dad's best quote and I'll try to do a good job of it explaining it in English. It says that you know when you carve a statue or a sculpture from a rock you gotta hit it multiple times before it turns out to be this eventual you know beautiful sculpture. So as long as these hits doesn't break the stone it's worth the number of hits that it gets because what turns out to be from a rock is a beautiful sculpture. So all these events in your life personal professional are just molding us to be you know the beautiful self that we are and we often emerge from difficult times with the fresh perspective of what bad is and a new appreciation for what is good. I remember exams for me when I was a kid was such a big deal and I thought if I can crack these exams there's nothing more difficult that I can you know not go through and now I'm like man I wish the only problem in my life was dealing with exams but that's how perspective changes as you learn and grow. Moving on to my professional journey. Once I started my professional journey with Dell in as a software developer. Then I moved on to CMU and from graduating from there I went to Sears as part of this technology leadership program, which gave me a platform to try out different things before I chose to pursue what made sense for me. I then spent a couple of years in Walmart, helping with the pickup and delivery experiences and building our own crowdsource platform. Currently I'm with Sephora as I mentioned, leading all of their product. So I just wanted to share again a couple of experiences from my personal professional journey that have kind of again help me define who I am and how I adapt to change. I think the earliest bit of it is my switch from being a developer to a product manager. I was a developer back in Dell and I soon realized that I wasn't just wired the way that you need of how a developer needs to be and it wasn't a match of match for me, but I plowed on you know being me I can't let go I have to do my best. And I was like, you know what, I'm going to do it. In Sears again when I started I worked on Hadoop content moderation, many, many cool things. But again I was like, this isn't what I want to do. So when I got an opportunity to switch to product management, I jumped on the chance, although I truly didn't realize or know what product management was all about. And even today I think it's one space where it really depends on how an organization defines it and having worked with multiple organizations. The underlying principles still remain the same which is the fact that we are the voice of the customers. And our single most important goal is to identify ways of how we can make it simpler and easier for customers to complete their goal, whatever it may be, it could be making a purchase, you know, writing a review or outside of retail just completing a job. You try to learn how the ecosystem is set and find ways either to make progress by adapting to it to what exists or bringing about changes and improvements that is well acknowledged by the people around you. Currently, leading a large org today I don't think I would be able to do a good job if I didn't have the learnings that I had in the past couple of years and getting one thing right which is basically that there is no right or wrong way of problem solving. There's only creative ways to make progress and being aware of progress as a whole is itself a major success. I think the next thing that kind of stood out to me was my experience in the various domains that I had to that I chose to work with during my journey so far. In Dell it's all it was all about fraud detection. There are a lot of smart people out there trying to hack the system in a lot of creative ways and our job was to make sure we stop that. In Sears it had to do a lot with integrated retail which was buy online pickup in store merchandise pickup in vehicle pickup returns and exchanges where you buy online you park and we get your product to you in five minutes. Walmart, a lot of pickup and delivery experience as well but I had the unique opportunity of operating like a startup within a Walmart company like Walmart where we built our in-house crowdsourcing platform. This was kind of unique because you're moving in the same fast-paced environment and with the do or die attitude like a startup but you have the backing of a large company like Walmart so it was kind of like best of both worlds for me and I learned immensely from that experience. In Sephora I started with digital which is basically your customer experiences on the app, websites, partnerships with calls and other things that we're doing along with payments and loyalty and soon I took on data and marketing tech as well. Just going through these various domains has given me a unique sense of problem solving to ambiguous problems and I'm still learning how to get better at it and I'm formulating my own personalized methodology of how I approach problems. I guess in a way of how we look at the world evolving to a hyper personalized experience for customers in a similar way you can think about your journey and how it's going through a personalization journey of its own because you are being more prudent and aware of yourself and your learnings and your kind of catering your philosophy and strategy that works best for you and only you. The other big thing that I think is a skill or is something that stood out to me was people management and it's truly one skill that we need to approach with the mindset that you learn and unlearn every single day. And my approach to this has been learning from others people's mistakes as much as you can. I think people's career and growth is too important for you to make your own mistakes so you never realize all the things that you crib about you know that used to complain about your manager without knowing the full picture is something that you may fall prey to yourself right so just always pausing and thinking that hey did it upset me is this something that if I was in you know that shoes wouldn't make me happy if not then why would somebody else be happy. But at the same time again it's not truly defined by your happiness you still need to understand what would make that individual happy but just always putting yourself in someone's shoes helps. At the same time building a team for individual growth, not just tied to a company right because at the end of the day we all want to grow as people we all want to grow as product managers irrespective of the fact that I'm working with Sephora or Walmart or Sears. I just want to be a good product manager is irrespective of where I am so putting that lens on that. You are building a team for individual growth is definitely something that would help you build a strong product org in general. I think the constant team that you're seeing from the past couple of examples and I can go on and on with many more, although cliche but true is the fact that you know the only thing constant is change. But one thing that we don't do is just be aware of the changes that we've gone through and how far we've come. So the biggest takeaway for me is the fact that I pause and reflect on how I handle changes and seeing if I can do better. In the way that I had done it in the past not regretting and beating myself up because I do that I used to do that a lot now I'm kind of working on that myself. I'm a very emotional person and I know that's my strength because that makes me passionate more empathetic towards people and more aware of the changes that happen. Not just to me but to the environment around me and I make sure that I have a sense of how it impacts others and I leverage my strength and my areas of opportunities to create a better environment for everyone around me including myself. And changes need not be like the big in your face kind of changes I know we all talk about the pandemic. But as you saw through the couple of examples that I spoke we've always been evolving to changes as humans and it could be small or it could be big ones right for example my dog is super sensitive to anything like he sniffs the wrong way and you know he's upset. So I had to go to the ER multiple times I personally haven't been to the ER myself touchboard but I've just gone through that and now I've learned from it and you know just how to manage that whole scenario of taking care of him and making sure he's okay.  Now that we spoke about you know what are the changes how do you know that you you've understood what these changes are what are some of the things that has worked for me to make sure that I'm consistently making progress as I navigate through this right the first and the foremost thing is just being customer obsessed. I think this is part of our DNA as as a product manager, how do you make sure you always put that lens because it helps clarifying a lot of the gray areas to like black and white so that you can always think and do the right thing that makes sense for what your customers want. So this is probably something that is applicable in any scenario and just a lens that you constantly need to put on to navigate any change. The next thing is understanding and harnessing the superpowers of your team. I think while we build a team, we all understand a common goal right like we spend time evaluating and assessing what success looks like, making sure we get alignment and that could vary based on who you are. For example, some people need numbers to prove success, some people need a success story. Some people are okay with unknown factors as long as they get leadership alignment so identifying what gets each individual on board and ensuring you provide them what they need to get them vested is the first step. The second thing is spending time to understand each other's nuances right we all have our individual personalities that makes us us. We all start the day hoping to make progress with no intention of you know, making anybody's lives hard so when you're spending time with all of these people you need to understand how they're wired and how they operate to understand to avoid a lot of unnecessary conflicts. This becomes harder as your team grows bigger but at times like this, what has helped me is just observe people for a few days, how do they work, how do they form opinion, how do they adapt to new dynamics and constantly make myself aware of how people operate so that I can create an environment that is beneficial for most if not all. And last but not least like celebrate progress and not just success. I don't think I'm doing a very good job at this but I'm constantly learning because we always look at it's a launch or a product release or an expansion but we forget that there is progress being made every day. And there's a lot of things even realizing that not doing certain things is good is progress so you I'm not saying like figure out the silver lining for every cloud but make sure you're able to identify the small steps to that brings people together. And it's okay for you to take a backseat sometimes if at the end of the day the ship is headed in the right direction and you know you don't have to be leading the ship at all times. This is a little bit of a controversial one but I think what has helped me is you know, I know we always say be positive be optimistic but it's okay to sometimes take off the rose colored glasses and just anticipate the risk and the change so that you're better prepared and you're not caught off guard. Of course there will be scenarios where you will be thrown things that you didn't expect but just going through this experience makes you better prepared and ready for whatever is you know thrown at you. The next thing is evolving your leadership style I particularly say evolve and not define because you consistently learn from your experiences and you change your leadership style as you grow. So when people ask me hey what is your leadership style it's kind of hard for me to answer that because it's not set in stone in that day or that time right it constantly evolves on what I learned what I changed how the environment is changing. But as you go through your personalization journey figure out what works for you and what works best for the others around you and make sure that it's not a stagnant process but a constantly evolving process where you learn to grow a lot more. Last but not the least think big I know if I can have a penny for everything every time I've heard this you know I would have many many many pennies but then in this context what I mean is let go of the smaller hiccups or focus on the smaller goal while you're looking at what does this all mean in the larger sense right in the grander scheme of things what you may have felt is a minor issue or a major issue is probably very trivial. My mentor always used to tell me you know is there some is this something that's going to keep you up at night three days from now three months from now five years from now. And just putting that lens in mind kind of helps me put that into perspective of how much investment and time I need to spend in some of these changes and you know it's okay to like let go of the smaller things in view for the large goal. So if you think small, you know your world will be small but if you think big, your world will be big. Learn from the changes, try not to fall into the same hole twice. But hey, if you do fall to the same hole twice you've got an out of it before so you know how to get off it, get out of it so do it faster and better. And at the same time, just constantly learn and continue to evolve on a day to day basis. That's what I had for you guys today. I loved sharing a few tidbits of how my journey has been. Thank you for having me here. And now we'll move to Q&A. Thank you.


I applied for a theme at Lynx to be able to build together a series of activities and networks that would help both my own research but also research in areas that I'm interested in and that I have a number of colleagues who who are also interested in so that the main area of our theme was new materials for energy and sustainability. And that pulled together people working on magnetic materials on catalysts on various different types of material, and we thought that we could build something together that that could benefit from the way that Lynx is structured so that we would be able to arrange activities that could help people in their specific areas, but also look for commonalities between the different areas that we were working that we were working working on. So I was able I was lucky enough to be able to build together a collaboration of very motivated people who were interested in trying to work together on this and so we decided to submit an application and we were successful. Our theme has been organized with a core group of people who meet who meet to discuss the the overall, the overall thrust of the theme, which, as I mentioned before has the title of new materials and so we have the activity split into different working groups. Those working groups cover areas like functional magnetic materials catalysis charge transfer materials nanostructured materials. And the working groups aware most of the most of the magic actually happens. And each, each working group has taken taken on different activities and different ways of working to try to get to that to get to their end goals that we've shared some of the processes that we developed with the individual working groups. But each working group has had a relatively free hand to sort out to sort out what they want so for example one working group has focused a lot on education, training up training up researchers with the necessary skills and techniques. Another working group spent quite a lot of effort on trying to figure out what's needed to improve certain types of scientific software for analyzing data and that kind of thing. The work has been organized in a way that's that each, each participant can can contribute what they what they what they want to and what they can and then we all build it together into one whole. So the benefits of having a theme at links are many. It's a great opportunity to be able to meet people from all around the world at the various different events that happen either remotely or in person. And we're also able to help support certain activities. So one of the activities that we have been running is a school on x-ray absorption spectroscopy and how to analyze data from that that has been of interest to multiple, multiple people in the theme multiple working groups. And this school has run with a strong practical components, and it's run for it's it's been run during the lifetime of the theme and now that the theme is coming to an end we're hoping that we will be able to establish this as a more permanent event on the calendar, as it's been possible to see all of the benefits that arise from that. So the theme is coming to an end, and it will finish at the end of this year 2023. And looking back, it's very nice to be able to see all of the different things that have been accomplished in the different themes and how in the working groups and how all of the working groups have moved forward and formed their own identities, and now have communities or hubs surrounding them that will be able to continue looking into those areas so I think it's been very nice to bring bring a large number of researchers here to the ground, and then they've been able to give presentations and talks, both inland and in the kind of surrounding areas in Sweden, and also in Denmark. And that's been really great to get to meet a lot of these people and have a lot of conversations that have sparked a lot of new ideas. And so I think that working on the theme has been a real pleasure and a real privilege trying to make sure that we can make it happen. The push forward activities, it's been really helpful to have engagement with post post doctoral scholars, and also students who have been interested in putting their putting some of their energies into into developing activities and being able to promote those activities. On the whole, I think that we have been able to build new relationships between people and that's been the most positive outcome from the whole experience. For the application process, I think the key thing is to make sure that one can see a clear benefit that arises for the, for the working groups that will that will that will make up the theme and trying to make sure that those working groups can focus on their focus on their own activities, but are also able to to to work together and see where there are where there are parts in common or where their work can help build a can help can help another working group. And so trying to make sure that there is a framework for the theme when it is operating that will allow that that kind of thing to happen. And mainly, the main advice, I suppose, is to make sure that you have a good team of people who are who are motivated to make sure that plenty of events happen.


Whoops. All right, all right. Stream is live now. Sorry about that. All right. So yeah, one approach is if we have multiple CPUs on, and we're just using the same scheduling algorithm, we can just say, screw it. We'll go ahead and just assign processes to CPU cores as long as there are still CPU cores idle. And that's it. That's just our Band-Aid fix to it. So in this case, we would have good CPU utilization because you're just scheduling it as long as there is an idle CPU. So no CPU would be idle as long as there are processes. And we would also be fair to all processes as long as our scheduling algorithm was also fair. Disadvantages to this is that it's not scalable. So everything blocks on the global scheduler. What does that mean? So that means that all the CPU cores have to coordinate with one each other. The scheduler can't make independent decisions per CPU core, so it has to make sure that, OK, process one goes to only one CPU core, and then process two goes to another CPU core. And I don't have a situation where two CPU cores are trying to execute the exact same process at the exact same time. So you're going to have to wait for the scheduler to make a decision on a core until you can schedule a new process on a newly idle core. And also, it has poor cached locality. What does that mean? So cached locality just means the caches are still valid and they're still around. So if a process is scheduled on a CPU core and it gets context switched out and then context switched back into that same CPU core, some of the caches might still be valid, in which case it could reuse them and it would be nice and fast. But poor cached locality means that that same process might get scheduled to a different CPU core. If it gets scheduled to a different CPU core, well, none of the caches are going to be valid. It's going to have to recache everything and it's going to be slow. So it would just lose some performance. But this was the approach back in Linux 2.4, which was released sometime back in the 90s. But back in that day, when we only had a single CPU core, we didn't really concern ourselves about this too much. And having multiple CPUs was like something only billionaires had or like large universities. So they kind of just ignored that. So a better thing we could do if we had multiple CPUs is we can create a different scheduler that is independent on each CPU core. So the way that it would work is that each CPU core, essentially, if we're doing round robin, they would do their own round robin scheduling on each CPU core. And then the way that works is whenever a new process starts, the kernel just has to make one global decision. And it has to say, what CPU am I going to assign that process to? So the advantage behind this is that, hey, it's really easy to implement. If I can just have one queue, I can just copy, paste the code and have one round robin per CPU. It's also scalable because one CPU scheduling does not affect another CPU. So they don't really have to coordinate or anything. And there's also good cache locality. So that same process will stay on that same CPU core over and over again. So you're getting advantages where it won't invalidate its cache. Disadvantages is that there might be a big load imbalance. So if you have four CPU cores and eight processes launching, well, this would probably assign two processes to each CPU core, which seems like a perfectly good, perfectly valid decision, whatever the user launches the processes. But in this case, we might get unlucky and schedule two really short processes on core one and then two really long processes on core two. And then suddenly, well, core one's going to be done with those processes and then it's going to go idle. Oh, I gave two thumbs up so it did something. Yikes. All right, cool. What was I saying? Yeah, so that way if two short running processes are done on that CPU core, then that core would go idle. And then core two would still ping-pong back and forth between those two processes. And one core is just going to be idle. Yep. The what? Yeah, so the question is, is there any way for the scheduler to know anything about the process to make a better decision, essentially? And the answer to that is, generally, processes are super unpredictable. So you could guess. A lot of this is kind of guessing. And we'll see that in a little bit. So you can make some guesses. But generally, when you make guesses and you're wrong, really bad things happen. But there's always a trade-off for this. Like everything with scheduling, you could just say it depends. So another way we could do that if we didn't want to guess the intensity of a process. Yeah, so we got another comment. Hey, can we at least load balance? And that's exactly our fix to it. So if we had per CPU scheduling, well, we might want to do some global decisions of load balancing. So you could have your global scheduler basically rebalance your per CPU cores. So it could just check if a CPU is idle. Then I will just take one process from this CPU and then move it to another CPU. And that's called work stealing. So you're just moving a process between CPU cores. But the problem behind that is, well, the process you switch CPU cores, it might be really sensitive to caches. So you might cause it to perform really poorly if you pick the wrong process to switch. And there is actually a way to signify this to the kernel that one process really wants to stay on a single CPU core and you don't want it to switch. And that is called processor affinity. So that's the preference of a process to be scheduled on the same core. So you can even do this in Windows.  And you can set that to high. And when you set that to high, it will stay on the same CPU core and your caches won't get invalidated and you'll probably get a bit better performance. So this work stealing algorithm is basically a simplified version of what the link scheduler was actually like in 2.6. So a little more modern. So as an aside, another high computing one, another strategy is something called gang scheduling. I don't know why we have all these horrible names, but this is one of them. So there might be a situation where you want to schedule processes altogether at the same time and the scheduler can't be completely independent in that case, because you essentially want to context switch all the processes at the exact same time. So that's called gang scheduling or co-scheduling. And it basically just lets you schedule multiple processes as one big unit and it requires a big global context switch across all CPUs. So most scheduling doesn't have to deal with this, but once you get into high performance computing, then this is also another consideration that will make your life even more difficult. Another big problem is real time scheduling. So real time scheduling means there's like a time constraint either for a deadline or specified rate for something. Yeah, so this would be like four processes need to get scheduled together on four CPU cores at the same time. Yeah, so if one stops, they all stop. If they all get scheduled, they all schedule it at the same time. Basically at high performance computing, a lot of the things are going to have dependencies and they can't run without every other process running. So they all have to be scheduled to get together. All right, so yeah, next is real time. So real time means there are some time constraints. So deadline or a rate, this is especially important for audio. So for audio, you know, you've probably learned, hopefully I kind of learned my signals classes. I think that's what they were. We're like there's sampling rates and you have to keep up with a certain rate. Otherwise your audio will get all garbled and it'll sound like complete garbage. So audio is an example of real time because you have to fulfill a certain rate and you can only have so much delay. Otherwise you will hear it and you will notice it and you'll say, hey, my audio is not synchronized and you will throw your computer in the garbage. Another example of that is something like autopilot. So that has time constraints.  So that's probably pretty bad. So you want to make sure it reacts really, really quickly. You don't want it to react in a second after it plows through someone. So with some systems, they are called like hard real time and that means they are absolutely guaranteed to complete a task within a certain amount of time. Generally for these systems, they are very, very simple and because they are simple, they are predictable. So this would be like some embedded systems where essentially you get to compile your program and then read the assembly and then count how many clock cycles it would take in the worst case if it took all the if branches and everything like that and then you say, hey, I can guarantee that this process or that this task will happen in a thousand clock cycles which means it'll happen in less than like a nanosecond or a few nanoseconds or microseconds or whatever and you guarantee that it happens with that. But with complicated systems, making that guarantee is nigh impossible. So there's something called soft real time. So that means you do not provide an actual guarantee because it is impossible to get a guarantee. So all you do is say, I will try my best to run this and then in practice, the deadlines always met. So for example, Linux, you cannot make any timing guarantees about the Linux kernel because it is insanely complicated and it depends on what is going on with your system. So if you are running a lot of processes all at the same time, well, you might not be able to make any timing guarantees while if there's only a few processes running, maybe you can. You would also have to, if you made real time guarantees, you'd have to understand how the scheduler works, make guarantees about that. So on and so forth, it just gets real complicated.  The Linux kernel, the scheduling algorithms we talked about earlier first come first serve and round Robin, there are actual scheduling algorithms used by the Linux kernel. So if you want, Linux kernel is open source, you can search the source tree. Anything involved with the scheduler is called schedule underscore something. So schedule FIFO is just a FIFO queue that's first come first serve and round Robin is just called schedule underscore RR. So you can see how it's actually implemented in the Linux kernel if you really want to, but they're actually implemented. So what it does is it uses a multi-level queue scheduling for processes with the same priority and then the kernel goes ahead and dynamically adjusts the priority. Again, it would have to deal with priority inversion and all that fun stuff. So how it does this is if there are any soft real time processes, it will always schedule the highest priority one first and it will schedule it until it essentially goes to sleep and it is done. So normal processes on Linux that we will find, that's where the normal scheduling algorithm comes into play and the general ideas that they adjust the priority based off how old the process is. So in the links kernel real time processes like I said are always prioritized over new ones. The soft real time processes are either scheduled for first come first serve or round Robin and those are essentially the only options because for real time, you want things to be nice and simple and predictable. First come first serve and round Robin are nothing if not simple and predictable. So they are given 100 priority levels in theory where zero is low priority and 99 is high priority. And normal scheduling policies apply to anything that is given scheduled normal and the default priority for these processes is zero. And in fact, this number is called niceness. So the priorities range from negative 20 to 19 where the lower number means it is higher priority. So the lower number means it is less nice, means it is greedier, means it has a higher priority. So 19 is really nice. It means you'll let other people go ahead of you. So processes can change their priorities with system calls. So there is a system called called nice that lets you change your niceness so you can be less nice. And then there's a schedule set scheduler that you could choose to, if you're real time, if you choose to be between FIFO or round Robin. So annoyingly, Linux kind of unifies real time and normal processes on a Linux priority. So the idea behind this was they meant to simplify it. And instead of putting soft real time in one category and normal processes in another category, they just have a flat priority line. So the Linux priority goes from negative 100 to 39 where lower numbers mean higher priority to the left on this figure. And higher numbers mean low priority to the right of this figure. So for normal processes, their niceness by themselves is negative 20 to 19 where negative 20 is on the high priority side and 19 is on the low priority side. So on the unified Linux priorities scale, well, they just essentially scale it by 20 so that if your niceness is 19, your Linux priority is 39. And if it's niceness is zero, Linux priority is 20. And if it is negative 20, your Linux priority is zero. Why did they pick that? Well, they picked it because on this unified scale you can tell whether or not you're a normal process if your priority is zero or above. Yep, sorry. So soft real time means you're scheduled either like first come first serve or round robin and you always run before any normal processes. Yeah, it's a set of higher priority processes that uses simpler scheduler because they need to be more predictable. And we can see on our system what they are now that we know how to read them. Yeah, so the idea behind this too is that if it's negative on your system and Linux priority, it means it's a soft real time process and this is how it maps the priorities. So before in soft real time, a higher number meant higher priority. So it essentially just scales it the other way around. So now we can explore our system and figure out what the numbers mean. So if we run each top, we can now figure out what two more columns mean. So this PIR, that is that unified Linux priority. So if this number is zero or above it means it's a regular process. And if it is negative, it means it is a soft real time process. So the next number here is NI which stands for niceness. So this number only applies if it is a normal process. So if the Linux priority is negative, niceness will always be zero. Otherwise it'll essentially be the priorities scaled by 20. So a niceness of zero corresponds to here a unified Linux priority of 20. So it's just the default priority. So we can see that init default priority. Most of the processes running on this machine are default priority. I can go look through some more then I find some more, some fun ones. So there's some process right here that has a priority of nine. So it's still a normal process. So it's niceness is negative 11 which means it is less nice which means it is greedier which means it has a higher priority. So they are called wire plumber, pipe wire and pulse, spoiler alert. These are processes that deal with audio. So they are higher priority because they have a deadline but they don't quite go to the extreme of say of wanting to be scheduled as real time. So we can go through some more. We can see that there's this RT kit that is slightly nice but not that nice. There's a low memory monitor that has a priority of negative two. So it's a soft real time process and you can probably guess by its name.  Other than that, so if something in the priority column says RT here, RT means negative 100 means the most real time you can get and you'll see that it's called migration and there's my creation zero, two, zero, one, two, three. Basically, I believe that's dealing the con that's the kernel process that deals with context switches. So it is the highest priority of anything needs to run needs to do whatever it needs to do and then it will start running another process. So we'll have one of those per CPU core. Anything else here doesn't look terribly exciting. So you can go explore but now we know what those two other columns mean. So here is the Lake scheduler evolution. So we saw like the big global scheduler and then we saw that they kind of divided it out per CPU core. So the actual scheduling algorithm that is used now is something called the completely fair scheduler and as the name might imply, it is fair and that allows for good response time which allows for good interactivity. Also a question that I probably missed before does the scheduler at all manage loading from physical storage into physical memory and try and prevent minimize page faults. We'll also, yeah, so dealing with page faults and all that stuff we'll get into later in the course but that's other things that the kernel has to be concerned about, yeah. All right, so the reason why we didn't use the per CPU scheduler is, well, has some issues. So if we had foreground and background processes, that's a good division. It's easier with the terminal, less so with GUI processes. So you might think, hey, well, maybe if you're like interacting with a window, that means it should have better response time but that's not generally true depending on how you use your computer, especially if you have multiple monitors, you might have multiple windows up that you're not directly interacting but they're playing a video or something like that that you would actually want good response time for but you're not directly interacting with it. And you also might have a window you are interacting with which just has like a static webpage which you don't really need to update so often. So the kernel has, if it's trying to divide foreground and background tasks in modern systems, the kernel would have a lot of trouble with it because it has to basically guess which processes are interactive with some heuristics. If you haven't heard the word heuristics mean, that just means that with some educated guesses. So I'm just guessing based off some data that this is a foreground task. So you might guess that processes that sleep a lot might be interactive that are waiting on like keyboard input or something like that but this is generally ad hoc which means just completely made up might be unfair because you might guess completely wrong and if you make a bad guess then a user will complain because suddenly whatever process they're trying to use is very laggy they don't really like that. So some ways we could introduce fairness for different priority processes is we could use different size time slices depending on the priority. If it's higher priority, we give it a larger time slice but there's also situations where this could be unfair as well because again, you're not guaranteed that your guesses are always going to be right and the penalty for being wrong is generally pretty severe. So we can talk about the ideal fare scheduling in the ideal world. Say we have an infinitely small time slice and context switching is instant. Well then if you had end processes the fairest thing to do would be to run them all at one over end the rate. So if there's one process it would get the full undivided attention of a CPU core and we'll just argue one CPU core here. Well if there were three processes that CPU core would run all three really really and switch between them really really fast to give you the illusion of the three processes running at a third of the time of the CPU. So it's just equally dividing itself among every process that's currently running. So for example, if we had these four processes where P1 wants to execute for eight time units P2 for four, P3 for 16 and P4 for four. Well, we'll assume that we can switch infinitely fast and then we will schedule it in blocks of four so each vertical line here represents four time units. So if they come in at the same time instant if we're being completely fair we have four time units to execute our CPU and four processes. So each process if we're fair just gets a fourth of that which is one time unit. So we would execute each process for one time unit in the first four time units if we're being completely fair then next four time units we do the same thing then next four then next four then at 16 time units in total each process would have executed for four time units. In this case, process two and process four would be terminated. So now I only have two processes left. So if I'm being fair they each get half the CPU time. So they would each get two time units to execute in the next block of four and then two time units again in the next block of four then at time 24 P1 would be done and then all four time units can go towards process three. So it would execute for four time units bring it's total execution time to 12 then at 16 and then all the processes would be done at time 32. So we're just being fair we're scaling the CPU based off how many processes are currently running. So really fair can't get more fair than that but super impractical. Oh, I never turned that back on. Yikes. Okay, so really fair, really impractical. It would be very, very good for response time and their activity. It would have the ideal response time which is essentially zero but we can't context switch in zero amount of time. It would have way too many context switches and it would be wasting a lot of time. Also, our scheduler would have to constantly scan all processes which is ON which is really, really slow. So context switching is overhead because it's not involved in doing what we want which is actually running processes. And guess what? Running a scheduler is also overhead. So even if you had the most perfect scheduler that could make the best decisions, well, if it ran for too long it would be completely useless. So your scheduler also has to be very, very quick. So another reason it's impractical. So the completely fair scheduler will, for each runable process it will assign it something called a virtual runtime where this case virtual just means not real. And at each scheduling point some process is going to run for some amount of time T which your scheduler will pick. And that real time the process is running is going to increase its virtual runtime by T times a weight or a fudge factor which is going to be based off the priority. So that is why a lower priority or yeah, a lower number means a higher priority because it would scale this number differently. So if the weight was like 0.5 that means, hey, I actually ran for two seconds but based off the weight I would, it would only count as running for one second of virtual runtime. So lower number causes your virtual runtime to increase slower, which essentially gives you more time. So this virtual runtime will monotonically increase. What's that fancy math word mean? It means that it only increases, it will never decrease. So the virtual runtime is guaranteed to only constantly go up. And what the scheduler does is it will select the next process to run just based off whatever process currently has the lowest virtual runtime. So whatever has it run that needs, it's essentially fair share. We'll select that to run and then we will compute the size of T based off how many processes are running and the idea behind that is we want to scale it so that we get close to the ideal fair scheduling. So if this process hasn't had a lot of CPU time while some other processes have, well, it would get a bigger T and it would run for longer in order to catch up. So that time slice is picked by the kernel and tries to essentially make things fair. So there's, if a process is new too it would just have some hard coded value for T so that there's just some starting point. So this allows the process to run and when it's time slice ends, which it computes we just pick the, we increase its virtual runtime then pick the next process that has the lowest virtual runtime and just keep doing this over and over again. So how it's implemented is red black trees. So that thing you learned in your algorithms class this is probably the first time you actually heard of it being used for something practical. So red black trees are self bouncing binary search trees and in this case, the key is that virtual runtime. Why does it do that? Well, it makes inserting, deleting and updating pretty fast, it's O log N but the part that the schedule is concerned with which is just picking the minimum virtual runtime. Well, that can be done in constant time which is really, really fast which is why they use that algorithm to schedule. So that red black tree is going to keep track virtual runtime at a nanosecond granularity and the nice thing behind this is it doesn't need to guess at the interactivity of a process. Yep, sorry. So if you, for a red black tree it's self balancing and the minimum is always at the top. Yeah, so it's still a binary tree but a red black tree has certain nicer properties for finding the minimum in constant time. So it can do this. So yeah, so you can Wikipedia red black trees but finding the minimum is constant but inserting that's where you have to do the balancing stuff and where it gets kind of ugly. So nice thing behind this completely fair scheduler is that if a process is IO bound which means it constantly gets blocked over and over again. Well, it would get its time slice and then it would run. It would probably block on something before its time slice is done. So it would only increase its virtual runtime based off how much it actually ran for. So whenever it gets unblocked, well it wouldn't have increased its virtual runtime that much. Other process would probably run, increase their virtual runtime. So this process is more likely to get scheduled immediately as soon as it gets unblocked and you'd get good interactivity with that. So soon as it receives some information it's more likely it will run immediately and you'll have some good response time for that. And also it would get a larger time slice if it was blocked for a long time in order to catch up to that like ideal fair schedule. So as we saw, scheduling gets even more complicated, more solutions, more issues. So we added priority. We got ourselves priority inversion for our troubles. We saw that some processes need good interactivity, others not so much. Deciding that is hard. Then we saw once we have multiple cores, well then we might have to do something about that and have per CPU cores. Then we also have real time which requires predictability and a whole different set of constraints. Then we saw the completely fair schedule which is what the Linux kernel actually uses to this day. And the idea behind that is it tries to model ideal fairness. And then also remember Friday, which is tomorrow. No lecture. I'm not here. I'm in Silicon Valley. I'm gone. And then, yeah, then so you'll be behind the other one, but this course or this section gets Monday off for Thanksgiving. So we'll be tied with the other one eventually. So we'll be unsynced for a little bit and then we'll catch back up. So no lecture tomorrow. And we also have a midterm room finally. So it will be November 15th. It's scheduled. We have the room from like six till eight. So unless there is any good reason not to, I'll probably start it at like 6.15 or 6.30 and end at like 7.45 or something like that. If you have any other suggestions for the midterm, just let me know on Discord or email me or do whatever. So just remember, phone for you. We're on this together.