We are going to look at the quality of service aspects of the system architecture evolution how the 3GPP guidelines for release 8 onwards concern the quality of service. We shall start with the 3GQS guidelines. Then we are going to go deeper into the advanced LTE requirements. Of course, this is all implemented through prioritizing the traffic. Let's look at what was the concept of quality of service in terms of 3G. That is UTRAN. We are talking about HSPA. We are talking about the 3GPP LTE networks. Of course, back in those days, I'm talking about like 7, 8 years or 10 years ago. We already had a heterogeneous service environment. Multiple services would compete against each other to satisfy the customer requirements. Therefore, 3GPP Alliance already had defined quality of service classes for mobile traffic. That included the UMTS and HSPA traffic. Please note that the issue of quality of service is only relevant when we are talking about data as well as voice circuits because if it is only voice then there's no prioritization. All the voice circuits have to be given the same treatment. But once we are comparing or competing voice with data, then we have to consider what is going to be the quality of service mechanism. So in 3GPP, the voice was taking a different path. That is circuit switch network bearers and then the internet traffic, which was best effort, was based on packet switching. So it means in 3GPP, we were already implementing separate connections for voice as well as for data. So as such, the quality of service requirement was only confined to the data services. This changed with the LTEA, that is system architecture evolution, because now all the traffic is based on IP. So it means now the voice is also going to be based on IP. Quality of service suddenly became more critical and harder to implement. Now we have voice based on the IP protocol stack. It means it is competing directly with data services, interactive services, and in addition to pure voice, we have voice over IP, we have IP TV, and we have gaming. So in the presence of multiple services, the quality of service provisioning becomes a greater challenge. For that, the QoS classes, which were described earlier in 3GPP up till the LTE, the quality of service class identifier was a metric, QCI, that would differentiate between different classes. It basically implements certain QoS parameters that start from traffic priority, that is, if we have multiple packets belonging to different user applications, including voice and video, which takes precedence over the other in terms of enqueuing and scheduling. Then we have the loss probability as another parameter. It says if we have multiple packets, which are at the tail of a queue and we have to drop one or some of these packets, which packets would be prevented from dropping, that is, they have a low loss probability. Packets which do not have high quality of service requirements would have higher loss probability. Then we have the delay. Delay means the end-to-end delay, which is to be implemented to meet certain real-time interactive application requirements, such as voice as such, video, interactive games, and streaming, audio and video. The resource types, that is, the services, which are defined for SAE include the guaranteed bit rate and the non-guaranteed bit rate. When we say guaranteed bit rate, it means the traffic which would be entitled to the guaranteed bit rate would be provided some minimum bit rate, at least under all conditions, whereas for non-guaranteed bit rate services, no such commitment shall be made. So depending upon their various combinations, including priority, loss probability, delay, et cetera, overall, nine QCI values have been defined. Of course, with them come nine different priority levels. The highest priority level is actually dedicated to the signaling, because signaling serves as the core functionality without which services cannot be provisioned. The IP multimedia sub-system, which is the heart of the signaling system in the overall next generation network, 3GPP architecture. The priority is given to the IMS signaling through the non-guaranteed bit rate resource type. It means it is given a higher priority, but no prior commitment is made to a specific data rate requirement. And it goes without saying that if there is no signaling, no connections shall be established and no data can be serviced. Once we have given the highest priority to signaling, then we have the priority levels going from the high to low. First of all, we have the guaranteed bit rate services, which are prescribed for voice over IP, audio, video, calling, streaming, gaming. And for non-guaranteed bit rate, we have the typical TCP IP based applications, which are also known as elastic applications. These could include the interactive games, which typically people play online, the browsing, email, file transfer, etc.


Hey, what's going on guys? Rilinel here, coming back at you with another Python tutorial. Holy crap, how many we got here? I don't know. Anyway, today we're going to be looking at another string function. We're going to check out string.center. Now remember, we're using our dot selector here and you're looking at the string data type. So you're really just centering a string. We're going to be checking it out and trying to recreate it as our own. And then we're going to import a new module, import math. So it's going to be your first time taking a look with more module-based stuff. So let's get idle ready and we can get started. I'm going to save this as file.python. Actually, I don't know. Should I call this something else? I'm thinking grandma. Grandmother Python. Yeah, that sounds good to me. Whatever. User bin, environment Python. Let's get a class going here. Base define in itself. Get some code blocks. We can actually set a string variable, self.string. This is a string. Oh, what are we doing here, idle? All right, so now we're going to do a conditional statement if names equal to main with roots, not fruit. Fruit is our base object. All right, now, let's get started here. Let's take a look at what we can do, first of all. We can do self.string. And then dot center is the function that we're going to be looking at. And now what it would do is you would take in an argument for like the width or how much of it you want it to be centered. So let's just try like 40. If we print this out, we'll be able to take a look at what we're trying to recreate here. So this is a string. What if we tried it with quotations? So I can show you how much it is centered. We're going to get some single quotation marks here, concatenate that on. We can concatenate another single quotation set. So we have a quotation mark here and then a quotation mark over here. And it's separated by all this white space. So what we've done is we've centered the string that we took as an argument and put it in the center of this 40-character long string. So then when we pass in that 40, it's really considering that width from here to here, including the white space. So now we're going to try to recreate that all on our own. First, we are going to need to import math because we're going to be able to use some new functions here. We're going to have to look at the floor of a division and that sort of thing and get like the number lower. But hey, let's give it a go. Now that we can import math, we've already done that. We can create a new function here called center. We're going to need to pass in that self-cured, obviously. In our case, we'll be using the string and the width. So let's get that code block started and we can do something new here. We can do string length. We can set that equal to the length of the string that we've been passed. So we have an integer variable here and now we can use a ground cover. You can name this variable whatever you want. I just think ground cover sounds kind of cool and it makes a little bit of sense, I guess. What you're going to do is you're going to do width and then minus or at least subtract the string length. So we're going to take that 40 that we might pass in and then we're going to take a look at all this and then we're going to divide that in half. So what we do here is we say sides equals the integer form of math.floor. Now math.floor, see, we're using our module here. We're using math and we're going to use our dot selector to get a function out of there and floor is going to round down to the nearest integer. It saves it as a float. It will return a float to you so you have to cast it or convert it with this integer function. That's what we're doing here wrapped around there. So inside the math.floor function though we do ground cover which is the difference between that width and the string length and then we can divide that by two. So now if we just quickly print out sides to see what we're working on and we can comment out this one up here and we can do print. We don't need to print anything. We can just run self.center and do self.string and then we'll pass in 40. Now if we run this we get 11. So in our case it's going to have this and you divide, you subtract 40 from that you subtract the width of the string so you have, sorry 40 subtract everything that's in here and then you divide that by two so you have these surrounding areas right here and since these are just space characters what we're going to be able to do is return sides or that number of white space characters sides times a string of spaces and then we can catenate on the string variable that we've been working with and then we're going to do the same thing again on the other side. So now when we print this out if we can catenate on some quotation marks again add that there and we run this we have this is a string and we have our quotation mark on one end and then the white space in between and all these. So if we print the normal function along with that we can see how well we did. This is a string, this is a string. It looks like we only have one space off so it looks like that means that they use the seal function sides equals integer math.seal or s-e-i-a there we go e-i-l and we use ground cover, just that same one here uncovered divided by two and this will round it up and this is a string, okay maybe that's not what they've done but you know, we don't know for sure I do recommend as always using the one that they brought in using the function that they have created because you just kind of should use that because they've obviously taken some preliminary measures or some things to make that the best and most easiest function ever or at least the way that it can be it's in its most pristine shape so don't use anything that we've created here when you're actually writing code but I just want to show you guys a way that it could be done or at least get you guys thinking about okay you can actually dissect some of the things that have already been offered for you this one here I don't have to worry about the top one see if we run this we get exactly what we wanted here a string centered in a width of 40 characters and obviously we can change this change the 40 to be whatever we wanted we can just say like 60 or something this is a string, you can see it's wider if we change it to 80 you can see it's even wider it's actually spanned across another line so you can do a lot of interesting things with this I suppose if you want to just center a string and make a nice little visual output and here's how it works or at least one way it could work on the back end so that's all guys, thank you for watching I hope you enjoyed the video and I will see you next time, bye


Hey everyone, my name is Phil Garrity. I'm a principal group product manager at Microsoft, and I'm happy to be here today to talk about my PM journey.  I don't know if there is a traditional PM path anymore, but I wanted to spend some time talking about mine. And then if it inspires somebody else, that would be great. So let me go ahead and get started and take you through some things that have happened in my career and some lessons learned along the way. All right, so the first thing I'm gonna do is just kind of talk about this guy, Satya Nadella, who's the CEO of Microsoft. And specifically here, he's talking about Windows 365, which is a product that I currently work on and have been on the team for the last couple of years. We are super excited that we've launched this product back in August. And it's been an incredible journey to be part of this team to build not only that product, but the team itself during the pandemic. And it's, you know, the biggest product that I've ever personally worked on, the most impactful product, the sort of largest addressable market with it. And for many reasons, it's just an extremely exciting product to work on. But I also wanted to, you know, talk about a little bit about what it is, but then also compare it and contrast it with like some of the other things that I've worked on in my career. So in a nutshell, what it is, is we've brought Windows itself, the operating system into the cloud. For the first time, you can log into Windows from any device anywhere in the world. And it's always yours. It's always the way that you left it. It's a personal cloud PC in the cloud. And there's a lot more that I could say about it, but I'll stop there for now and say that building this service was an extraordinary effort. Literally, there are people all over the world working on this at Microsoft. And it's a privilege to be able to work on it. Not all products have as much sort of fanfare with them and the end user experiences that this particular product does. And I've worked on some that weren't like that. In fact, the product that I worked on just for this was called Partner Center. And although Partner Center is a much less well-known product, it is incredibly important to Microsoft. So during Partner Center, I was able to work in a few different areas. I worked there for four years and we built out a set of tools and capabilities for Microsoft's partner channel of almost 50,000 partners to transact with Microsoft for all of the cloud services, including Office, Azure and everything we sell through this portal and a set of APIs and an SDK that backs it up. So my team worked on the analytics that partners are able to see about what's happening with the customers they're serving, their membership in the Microsoft Partner Network itself and the partner account inside of the portal. And what's important is, and to remember like all the details here, it's just that two things, this product and the other product, Windows 365 that I showed you are incredibly different. This product has a much smaller audience. It's a pure B2B type of a product. And in some sense, it has less polish and flair in Windows 365, but it can be just as important in terms of driving revenue and driving business opportunity for your company. And I learned a ton on this product just like I've learned a ton on Windows 365. So many of the things that I've learned on Partner Center, I still carry with me today on Windows 365 and some of the things that I learned along the way didn't translate. And one in particular was that the end user experiences have been quite different for Windows 365. And we just had to adapt the product for a much larger audience. So I wanted to give you a little bit of all of that up front, because that's what I do for work. And it's kind of what has shaped some of the products that I've worked on and the way that I think about the discipline. But this talk is about how to get into product. And so let me back all the way up to the beginning of when I started out as a product manager, actually be even before that. So this is 12 year old Phil working on a PC there on the left that I wanted to put together so that I could play games with my friends. We used to drag these huge desktop PCs around with us when we'd have play dates.  And we'd hook them up and have land parties and play things like TIE Fighter, as you're seeing here. I thought it was the coolest game I'd ever seen.  But once you get that thing loaded, it's so much fun. And it was well worth all the hours it took to figure out how to build a computer. And I loved it. I loved every aspect of it. I even loved DOS. Lots of people think that's a horrible sort of black screen with the blinking cursor and all that. And I just thought it was beautiful for some reason. I thought it was just fantastic how you could manipulate a computer just by typing a few words in. And I really started a love affair with computers very early on. But something happened. Life intervened and I thought for a minute that I should go to medical school. And I should be something different. I should be in healthcare. And so I went down that path. I was pre-med and I started out my career path thinking that I was gonna go into medicine. But I realized over the course of time that that wasn't the right way for me to go. And so I went from gamer to failed doctor to business. It turns out business has happy to take failed doctors. And I went into consulting. And then I parlayed those skills into a job at Microsoft after I'd kind of realized that consulting has a whole bunch of great skills that you build. But I actually wanted to build things. And I wanted to basically be involved in owning things and driving things forward and having something that I could call my own. So I left consulting and went to take a business job at Microsoft. And this was around 2009. And then I had my first business job at Microsoft and I worked in an area called licensing and pricing, which later became business planning at Microsoft. And there you learn about all of the different skills, how they're packaged and priced and basically monetized for the company. And I worked on Office 365 and I learned specifically about our channels, the way that we sell it through the website and through partners and direct to large enterprise customers through a huge agreement called the enterprise agreement. And what all that taught me was that, well, it was a lot about how enterprises make money. The genius of the enterprise agreement. But I really focused in on the partner side of things. And I got the opportunity to design a new way of selling cloud services to Microsoft's partners, to and through Microsoft's partners as a reseller model, which didn't exist prior to this at Microsoft. And that started kind of my journey into the next opportunity. So the next opportunity that I had was in product. And I was able to start out by building channels, partner channels for Microsoft and eventually move into a product role at Microsoft where I built the partner center experiences that I showed you earlier. And that sort of step-wise progression from business planning into something that was kind of had a business element of it in a program called the Cloud Solution Provider Program at Microsoft, but then also had a platform that underlighted that because I was involved in the design of all that and worked very closely with a bunch of product managers on it, they trusted me, they knew me and they knew that I was somebody willing to take a bet on later on when it was time to build the platform for Cloud Solution Provider Program that we call Partner Center. So all those things were connected, all those experiences I was having were eventually connected. I couldn't see them while I was going through them, but they ended up being connected and they ended up being a really important part of my entry into product. And so I'm spending a little bit more time talking about that since that's what this talk is about, but it just became really apparent to me that being intentional about the steps you're taking toward the career you want is really important. You may not be able to get there in one step, it may make more sense to take multiple steps to get there and leverage your strengths while you're on that journey, lean into them and you'll start to unlock the path. So that's what happened to me and I'll talk a little bit about what I learned in that last phase. So as I was coming into product, I didn't really know what it was. I just thought it was engineering and I was afraid that maybe I was missing something, that maybe that the discipline self was gonna be too much for me, that I was gonna fail at it, that it was only for really smart people in Microsoft and for some reason I wasn't in that group. And so I had a lot of fear going in, but I was also, I felt like, hey, worst case, at least I'll find out that this isn't the right thing for me. I didn't know anything about user experience. I didn't, I mean, I knew things about technology, but I didn't think I knew enough. I knew a lot of smart people at Microsoft who seemed like they knew more than I would ever know about technology. I did know a lot about business though and I did know how to tell stories. I knew how to use data and convince people of things. And so there were skills that I had, I could write and I could speak. There were skills that I had that were very useful in the discipline and were in fact, skills that not everyone that I was working with had. So I began to be able to see that I could really lean on that business acumen while I was learning the other areas. And the first other area I learned was the technical area. The last one was the user experience. And they just began to build on each other and reinforce each other. And while I was absorbing from the people around me, the things that I didn't, that I wasn't as strong in, I was really continuing to lean on that business acumen to help me add value to the people around me and to the business that I was working in. Because all three of these areas are important and you'll find that some people are more strong in one area or another. So search out the people that you can kind of buddy up with and learn from. And also sometimes work with on projects that will compliment your skills. So here's some examples of how many of us at Microsoft think about product. I don't think this is unique to Microsoft. This came from a document that is used internally to talk about what is the role of a product manager in the company. And I've spent enough time outside of the company talking to other PMs to know that these things are pretty common in any product role that you have. And what I've done is I've highlighted in green that things that for me, I was really leaning on that business background to at first to kind of carry me through some of the other things that I was learning about that required the technology background a little bit more. That required some experience in the process of actually going through and building out a product and the user experience elements that we talked about. So the yellow ones on this list, things like prioritization and how you set metrics, developing like a roadmap of the features that you're gonna build in actually going and building them. You know those things took a while for me to pick up on and to figure out how to do. And it's still a work in progress to be honest on all of these things. It's what I love about this discipline. You're never done. You're always just getting better and sharpening your tools. And so today I'm stronger in some of these areas certainly than when I started. And today I lead a team of people that is building skills across all of these areas. But everybody comes in with a different background and did a different skill set. Some people are just blank slate right out of college. They don't have any of these things. And for those who are looking for just the aptitude to be able to take these on. And I'll talk about that in another minute. But as you start to build the skills over time in the discipline, you're looking to build out strength in these areas. Fundamentally, your job as a product manager is to drive growth through the product. Drive growth of your business and your company through the product. So it's your job to understand how do we do that? How do we make sure that we're building the right product with the right vision and strategy or measuring things appropriately that we have a long-term development plan that's being well executed. And then we get it into the market that people buy it, that they understand what it is and that they become fans and evangelists of our product. And then finally, you have to monitor it at the end and you have to know if this is the right product, you've made the right decisions, you have the right features, and if not, you pivot. So that process is universal and it's really important that we in our discipline are strong at all aspects of this. So there's some lessons learned that I wanted to share with all of you for just sort of how I've thought about a product coming into this career and what are some of the things that I've taken away from it? Kind of looking back across the arc of really my life more than even just my career. So the first thing is follow your passions. I can't stress that enough. If I had known that when I was 12, I probably would have gone to get a degree in computer science. I probably would have skipped the whole medicine thing and I might have missed out on some things along the way that actually taught me a lot of other stuff. So I'm not sad that that happened, but in the end, following your passions is what brought me back to the right thing to be focused on, got me into technology. And ironically today, working on Windows 365, I'm building computers again. They just happened to be up in the cloud this time. Leveraging your superpowers is really important as we talked about.  In my case, they were communication and they were ability to tell stories and to use data to create compelling arguments. These things allowed me to essentially contribute back to the success of the products and the organization that I was part of and bought me time to learn the other things that I needed to learn to become a stronger product manager and eventually to become a leader that could then help other people on that same journey. Don't take too many steps all at once. So this is important. You don't want to try in, at least in my experience, change lots of things at the same time. That makes job changes just really difficult and it can make the same is true in products as well. You don't wanna change too many features at the same time because you can't tell what it is that you might have done wrong.  And so I needed to do it a little bit more of a crawl walk run and it takes longer but that patience pays off because you do develop really strong skills along the way. And that diligence does pay off in the end. Relationships, I can't stress this enough.  You've gotta have a relationship for that. You know, as a hiring manager, I might get 400 resumes for a job that we open and we'll interview five or six people. You've got to be in someone's network in order to even get into that interview stage. It's usually somebody who knows you or somebody in your sort of extended network that's kind of getting through those filters and that's just the reality of the world. You know, most industries are like that and most hiring managers make decisions like that. It's how things happen and it's equally true once you get into the organization that the relationships you have will dictate the partnerships that you're building. They'll dictate your own growth and career trajectory.  So pick the team carefully, pick your partners in your end year and the people you're collaborating with carefully. These relationships are gonna be the key to it all. It's actually not about the technology. It's not about the software. It's not about what we think it's about. It's about the people. If it was just about the other stuff, we'd just get robots to write software. The last thing I wanna talk about is these three things here, curiosity, grit and empathy. I have not figured out a way to teach people this stuff. It is hard to teach this, but it is much easier to teach all of this stuff on the previous slide related to the product journey.  If you're coming in right out of college or with some experience, there's a path for you in product, but you really do need to have these three characteristics. Curiosity is critically important because you've gotta stay interested. So if certain things are uninteresting to you, please don't become a product manager in those things. You've gotta stay focused and be in it for the long haul and that's gonna require that you're willing to also get up off the mat. If you get knocked down, grit means you get back up. Angela Duckworth wrote a great book about this. I encourage you to check it out if you're interested in learning more about it, but grit is resilience when things aren't going the way you want and it's coming back and keeping on it until you get it right. And the last thing is empathy, which is maybe the most important of all of these. It's the ability to understand other people and see things through their eyes to treat them with dignity. And it is incredibly important to do that as a product manager with our customers, with our internal relationships that we have, both with developers and other partner teams you're gonna work with. You're at the center of so many different teams that are relying on you to build the most important asset that the company has in terms of the IP. So you have to have empathy to get this right. So those are my tips, lessons learned. I'm Phil Garrity and I hope that you've enjoyed this talk. I have a wife and two wonderful kids and a lot of this stuff that I do for them and I do for the people that I work with. And I think that the journey that we're all on is the beautiful part of all of this. So I really like my Angelo's quote there. But if you have other questions and you wanna follow up with me, please do on LinkedIn or Twitter. My info is right there. Otherwise I'll just say thank you very much and it's been an honor to speak with you and I hope you have a great rest of your day.


Hi, this is the Jenkins platform special interest group. It's the 4th of June 2020. Welcome everyone. Let's go ahead. I'm going to share my screen and let's look at the agenda to be sure that we've got all the topics we want to cover. So talking about open action items. Then Windows service wrapper for support Windows Windows service wrapper support for YAML parsing. Windows support policy Oleg. Then I'll give a brief summary of the get plug in performance Google summer of code project that Risham is working on. And if Slayton happens to join us will do custom Jenkins build service project I can talk to Docker images and Alpine briefly as a discussion topic. Any other topics you need to add to the agenda. I don't think so. Okay. Open action items the we are using the CDF zoom account now. So that's in progress, but needs a needs a pull request to show the place the new URL into the calendar. So calendar is not managed by pull requests. It's managed just by Google calendar. Calendar updated. I thought I had the good I will. Yeah, so maybe you're talking about Jenkins event calendar. But to be honest, I'm going to just use it and replaced by embedded calendar. Oh, I think that on Jenkins website. So are you okay if I leave it as is in that. So if you have referencing directly from the bottom six page, it makes sense to update that. But not for the recurrent events. I will just run the movies for you. Great. Okay. You are all in the platform platform page. If already there, I'm not sure if it's already there because I think I had intentionally not included it there. So that we didn't have it exposed that publicly. I've still got the open action item on a jet for Docker operating system support that continues a window support policy. Yeah, so windows support policy itself is done. We will talk about it later. There are some downstream action items for integrating changes, etc. But here we can say if you claim that this section item is finally done. And and it's merged everything set. Yes. So thank you. I still have the action item to review the Docker build rework PR. Alex and I were discussing it in addition in the context of Docker images and alpine. And so we'll talk about that later in this meeting as well. Windows server wrapper support for YAML. Would you like to give us a summary even just verbal is great a brief summary of where things are and I'll take notes. Okay, sure. Okay. Actually what I'm doing is. So previously Windows server is support for XML and what I'm doing in ing of 2020 is update Windows server for YAML support actually the configurations will be fitted with the YAML file and At the moment what I'm doing is actually I create a PR with the prototype with the support and I'm waiting for review for like and to continue with that. And and in the project also I'm going to do some documentation related to Sorry, Windows server and what I'm doing with the YAML supporting task and I'm sorry, but I don't know about poor things. I'm still getting used to using to Windows server. So So, yeah, those are the things I'm going to do in this meeting actually and yeah, that's all. I think so. Yeah, thanks for the update. So, yeah, maybe it also was mentioned that the restening request for XSD schema for some configurations, because you're right now Jinx project uses XML. So while YAML configuration is in progress. We could already get some business from this project once the scheme is landed. So, oh, like I'm not sure I captured that so the there's a pull request with the XML schema definition as well. Yeah, XSD. Oh, okay. But the XSD is just a standard XML. Great. Okay, thank you. Excellent. Brutica. Thanks very much. Anything else on Windows service wrapper. One thing which we will talk about later, we will be updating Windows service wrapper versions in the Jenkins core. So right now we use version 2.7 or even 2.5, which is a bit old. And there are new versions and this new versions include a particular useful features. For example, permission elevation when you install as a service. So you won't long we need to run agent GRS administrator in order to be able to install as Windows service. So, yeah, these changes will be landing soon. We're just waiting for Windows support policy because it requires some changes be landed. But yeah, this is what we will talk about later. It's great because I had somebody who was asking me personally, hey, how is the how is the install as an administrator so this will improve the experience for users as they as they attempt to install the agent process as a service. Yeah. Yeah, there are many other changes, but yeah, I would say that this is the biggest one.  We had some delay in windows support policy discussions. So fun that I didn't. Excellent. That that is really encouraging. So is that one then that Boudica would end up creating a blog post on or a docs page change on it or is that something that would come from the Jenkins core team when when it's used. I guess that would come up from Jenkins core team, because it's not really related to Boudica's project. It's basically a result of a lot of changes by next term over the past few months. Some of these changes have been already integrated some are still need to be integrated. But yeah, once we get new version than the next releases will also include changes by Boudica so we're starting with. So it's just a foundation work, but it's really provides. I don't think there will be new documentation, but yeah, maybe some updates, because we already have documentation. The documentation is just flawed. So it may might be cleaned up and simplified. Okay, that's great. Wonderful. Thank you. So let's take Windows support policy. So, quick update, we already had a discussion in the last meeting about that. What has changed so that firstly, the policy was merged yesterday. So if you go to the Jenkins website now you can find it there. So that was a result of the yesterday's governance meeting where we approved some changes. So the notable change that we moved Windows 10 support from level one to level two, because right now we don't have means for testing of that. So Alex is looking into test automation, but for the time being, we agreed that it would be tier two and everybody is okay with that. So what it brings firstly, now we have an explicit list of versions we actually support so we can. Now we know which windows API versions we support, which is important for some of the projects. Let's say you include. JNA, we include the JNR in our libraries, and we have been already hit by updating and the suffering from a window API version some of the platforms. And pretty much the same for .NET, because right now, so what I was about talking that we bundle Windows Service Rapper for .NET Framework 2 and .NET Framework 2 is basically very old. And it became a maintenance burden and not all features are included. So this new policy increases minimal support version to .NET Framework 4. And then at the same time, if you need to use Windows Services, basically Windows Services is on the component depending on the .NET. You can use .NET Core versions built in Windows Service Rapper. So, yeah, for example, the YAML library Boudic is working on. Again, it has very limited support for .NET 2. So operating to .NET 4 will help us to enable YAML support. Great. That is wonderful news. Yeah, so YAML library doesn't need .NET for it can actually run with .NET 2, but there is a lot of limitations. So .NET is organized slightly different from Java. So if you want in Java, you can get the same, but yeah, there are restrictions work differently there. Well, is .NET 2 even maintained by Microsoft anymore? I mean, .NET 4 certainly is. No, it's not. .NET 4 is also obsolete. Oh, also, okay. Yeah, so the choice of .NET 4 basically comes from a minimal viable option. Let's say Windows 7, but we can bump it further later. So it's just temporary state. Most likely I will be suggesting to go to .NET 4.5 in a few months. Oh, okay. So previously when you were saying .NET 4, that was 4.0 or some? Yeah, 4.0. I see. Thank you. Yeah, so it's a .NET framework to be specific because .NET Core and .NET framework have different versioning. Yeah, so yeah, this is a minor thing, but at least it should improve our options to improve Windows 7's wrapper. So Windows 7's wrapper already provides distributions for modern .NET versions, but your .NET framework becomes a maintenance overhead there. Okay, so for instance .NET 4.5 already has a Windows W package available for it. Yeah, so the latest version right now is 4.6.1, for which packages are provided. We can provide newer versions, we can also provide .NET Core versions. So basically the packaging just defines the minimum required version of .NET. And for example, in Jenkins we have a lot of hugs to get .NET framework to versions running on modern .NET versions. And there is already a pull request from next turn which basically removes these hugs. So it will become a bit simpler and more testable. So you're all spent sometime this month to finalize these changes because they long covered you. Anything else on Windows support policy or Boudica, any questions from you to Oleg on Windows support policy? Actually I'm good. Okay. Great, thank you. Thanks very much. Okay, thank you. Next topic, brief summary on Git plug-in performance GSOC project. So the reshob has provided a benchmark pull request. And he's actually revised it several times working through the process of bringing JMH benchmark execution on to cident.jankins.io. So this gives us the benefit of having access eventually to S390X, PowerPC64, AMD64 Linux, and Windows AMD64. Potentially. So the problem with it is that cident.jankins.io is still not designed for benchmarking. So I had this discussion last year as a part of JSOC, as a part of platform seek meetings. But on demand provision and call for virtual machines and containers. It's not exactly how you do performance testing if you want to get metrics. So yeah, if you improve performance by 10 times, it's one story. But if you improve it by 5%, then our current infrastructure actually isn't able to reliably capture that. And that I think right now, given that this is the initial exercises are actually comparative checks between CLI Git and JGit. I think the risk is relatively low there. The agreed wholeheartedly. Yeah, there was no risk. You just shouldn't use this metrics as absolute values. Relative ones. Yeah, for sure. Yeah, so the risk is benchmark comparisons between between runs are ultimately unpredictable because we're getting on demand provisioning. One of the things I did see is that the pipeline library seems to use a resource lock, which attempts to prevent more than one performance benchmark from running at a time as though it were locking onto specific class of hardware. I haven't investigated yet though. So there is a library method and there is a blog post from a view there. It was just a student in 2019 working on the performance for all strategy plugin. So pipeline library step uses high mem machines. So basically the machines we are using for acceptance this harness. And yet these machines, I believe they still provision as virtual machines most likely still on Asia. But still, these machines are not that predictable in terms of performance in terms of, especially if it comes to network overhead. So, but yeah, it's definitely better than running with ACI. Yeah, and they understood there. Okay, so between runs between jobs. Yeah, they get a different machine. So one of the one of the techniques we've also been using has been to run the same benchmarks on mark CI server, which has fixed hardware but it's ancient fixed but old hardware. So it tells us something different. The other is that he's running his on. His job is running on his Mac. So we're, we're seeing interesting samples and doing being able to cross check between various configurations and say hey, is it consistent that on small repositories. In fact, faster than CLI get and is it consistent that on very large repositories CLI get is dramatically faster than J get. So, those kinds of comparison. What's that until you run out of memory. Because J gate is much more resource consuming than. Right. Well, even even ignoring the, the resource consumption we've seen that with large repositories command line get wins every time. Even if J get has lots of memory available it's still fundamentally slower than command line get is command line get seems to to somewhere between the 10 megabyte repository and the 90 megabyte repository. So J get loses the race. Maybe J get may have some advantages for cases where we cannot use a common language. For example, if you want to fetch a particular file using to get. For example, with J get you have opportunities to shortcut particular needs in order to, for example, query the Jenkins file from repository. Okay, in the most cases, I think you should just use proper provisioning of like GitHub branch source or whatever. You should do it without any J get magic. The benefit there is get the branch sources can then use the rest API, they can, they can make direct requests to a single file. Yeah. So, that continues. The, we also have two or three pull requests pending several pull requests already submitted. One is for the redundant fetch removal. One is for is to refine and improve the benchmarks. One thing I have to drop. I just got an emergency meeting request. Okay. So, sorry for the late notice. Next time you should just have a full meeting with more participants. Thanks all legs. Bye. So last topic was Docker images and Alpine. And there Alex Earl, the maintainers of the Alpine images, Alex Earl, myself, and how awkward, one of the person met last oh and like met last week, and discussed, how do we approach the dot the Alpine images right now we need to update the Java on Alpine, because it's currently JDK eight update 212. It's therefore several several major revisions behind or several revisions behind the current, the current Java eight update 252. That is in progress. Alex has submitted a pull request. And the, the change really will have to use adopt out of open JDK. Instead of using JDK, the open JDK bundled with Alpine because Alpine no longer provides JDK updates beyond 212 for Alpine three nine so that that part of that transition will be adopting adopt open JDK. We also expected that we will eventually update our Alpine base operating system version to three dot 11 or newer. Those are the items that we had for our meeting today. Butika unless you have others I'm going to go ahead and stop the recording and close the meeting. Okay, okay. Thanks very much. Thank you for joining. Thank you.


Привет, всем. Ну, я буду задавать вопросы для audiences, поэтому не поверите мне, чтобы ухватить свои руки. Но, первое важное вопрос, как много у вас выживающий пейстер? Ок, если кто-то не ухватит руки, говори с новым человеком, кто это сделал. Если вы не хотите быть конвенцией, то в конце все это. Я буду показывать, как Хард-корр-стоф, клоуза до конца, но это начало с какие-то важные вещи, как все, которые вы знаете. И многие, даже долгое время, не знают все функции. Во-первых, у нас есть большая часть из пищи, использована для себя, в том числе в пищи-писторном работе. Вы, в принципе, идите к гуглу, в гуглу в пищи-писторном работе. Я покажу вам гид-хаблинг, вы проверите, и вы следите. Я буду делать это сейчас, так как вы можете продолжить или делать некоторые части. Также, такой маленький дисклеймер, я буду использовать оба или аксесс-билд, и актual, как-то не релизовый билд, работа на моем лепто-пшопе, так что ничего не может работать, но все. И... Окей, начнем. Так, это, в принципе, проект-виндл, editor, какие-то тул-боксы. Наверное, многие, которые знают, в пищи-писторном работе, не помните, обычно, где их есть. В последней версии, мы очень обновлены санкционалитией. В принципе, это называется search everywhere. Вы double-pressed shift key, и вы typing anything. И мы покажем вам релизовые символы, файлы, акции, что-то. Вы можете попробовать лимитить это, включить системы, классы и так далее. Это очень важная акция. Я не знаю, где эта работа в меню здесь, в проекте, или что-то. Второе, если вы пойдете в этот workshop, или участвуете пищи-писы, когда-то, у вас есть важная вещь, которую вы используете. Если вы пойдете в меню, и проверяете проект-виндл. Это фреш-инсталация. Я использую ее для сегодня, я думаю. Я могу использовать фитюры для того, чтобы они использовались. Я показывал некоторые вещи, я использовал селекшн, по-моему, search, rename, и если я scroll-down, будут фитюры, попробовать с ними, и никогда. И в описании будет, как попробовать. Может быть, advanced. Так что я strongly suggest, все, чтобы вы открыли копию пищи-пис-пис-пис-пис-пис-пис, и проверили свои свои вещи, которые вы не использовали. И последствия, если что-то не работает для вас, или для любого из ваших компаний, или вы не знаете, как это должно работать, и вы не сможете Google it, не обходите, и не обходите поддержки. В принципе, это будет открыть форму, и мы у нас, как ребята, работаем прямо на моем команде с нашим ищетом, который both help us to identify the problems and help you to find the dark rounds. So you won't be struggling for months, or just hating pish-pish storm, we will help everyone to fix issues, and we will have you work down faster. Also, if you are using pish-pish storm for some time, there is a key map built into the IDE, it will open the PDF file you can print, but also online I found some handy tools, you can show you how it will work, if you press something, but directly in the browser, I think it has stuff for many products, so somebody did it, really nice. Okay, this is, I'm done with introduction. Okay, well, I will show a couple of things, which are in pish-pish storm for a really long time, but not many people aware that they are there. So, again, how many of you work with databases from within of pish-pish storm? Nice. How many of you do use databases in other tools or run some SQL? Okay, well, some of you, then I will be short. Basically, pish-pish storm includes everything we have in our other product called DataGrip. It's a few feature database client. It basically supports everything in cloud and locally and whatever. So, I will just quickly show how it might work. I will open a database console with this source DDL script and execute it to create schema. Just one, one, two, three, four, five. You see, it has been refreshed, created in MySQL, something like that. This is database explorer, looks nothing special, but this is pish-pish storm because we treat all the languages and all the presentation of languages the same way. So, be it text or some data structure, we work with it and keep it consistency and keep consistency across the languages. For example, I will refresh it with a pish-pish file, basically. So, you see, if you start typing in some literal here before, it will recognize that this is SQL and will also offer you completion from this database you have. And we understand all these databases I'll show you here properly with all the dialects and permissions and all the advanced stuff right there. For example, I can show you some help you completed constraints. We have smart completion. It basically sees the foreign keys and helps you to do it. And we also support refactoring this. For example, I can go and rename this table and it will generate both DDL and it will change all the references across your source code and everywhere, for example. So, this shows me references to table basically here. Like you expect with PHP or JavaScript whatever. So, full Fletcher skill client. And even more, it has like you can do it visually. If you change something here, you can rename it from here, basically. Or refactor, or do something. It will work and it will both generate your DDL for you. So, you can, if you change something, you can compare stuff. Also, you can basically view the data and export it anyway. This is one more hidden site of PHP Store. And this is available for everybody with the product. So, this is your database. It also has fully fledged front-end development support. But I won't be showing you that because I'm not a front-end developer for many years. I will show you the one thing.  For example, I don't know, we have live editing in real time. All the JavaScript support. Lots of stuff. You can go to WebStorm blog and take a look what's new there. But my team introduced one more theme because in PHP we're also building like services. And we have APIs, REST APIs, stuff like that. And we have for some time a new REST client who tried working with REST requests within PHP Store already. Okay, nice. Basically, again, you don't need to do anything. We just create a file with HTTP extension. It basically works like some language. You can create a file on this folder. Basically a new... So it starts simply. It has some help. And basically this is like standard like raw text. But it has completion in some places and have what you might expect from the JetBrains editor. But let's try it. You see a second. You can see the body. You can see the body for you in scratch. So you can work with it later. If it's a REST file, it will be highlighted, formatted for you. And basically if you do it a couple of times, for example, this is a request not to Google, but to your PHP service. You can change the parameters. You can script them. You can store the keys and make assertions. I will show some simple stuff. I will compare them and see what has changed really easily. And I can make assertions on this writing small script. You can look for PHPStorm, REST, ClientTutorial, and we'll see what is possible. This is all for non- less PHP related parts, I guess. So if you have any questions about these parts, this is a moment to ask them. Okay. Let's close the workshop. And again, this workshop has all the concepts covered. So if you want to work with some kind of testing, including JavaScript testing, version controls and all that, you can take a look here. You can open any file. And this will be all the documentation here. Close it. And one more thing. You and all the PHPStorm has a lot of plugins. And in recent editions we have improved the workshop. Sorry, the plugin marketplace. It has for example we opened the file which is not supported. It will suggest you to install the plugin. For example, batch support here. And after that I restart the IDE. It is immediately available. And the support for this language works in the same way as it does for PHP, JavaScript or SQL. We check all the files. We keep the referential integrity within the file and across the files. You can refactor stuff and all that. Now this is the segue to like advanced part. Basically how IDE does this. IDE is not a text editor. You can work like this text. You can select stuff, type something in. But actually inside of the hood it works somewhat in between of how PHP runtime itself works. And maybe compiler works stuff like that. But it's really different because most of the time in your editor your code is broken. You start to type something, you didn't finish it. So IDE needs to write the wrong stuff and help you to correct it. So IDE sees the code like this, for example. It's a tree, basically a forest of trees with robes between branches. If you reference symbol in one file we keep all the system of these cross references intact for you. This is true for all the languages. This approach, for example for PHP it's all the same. This is technical, we don't need to know this actually, but it's important for next part. Same for SQL also. For example this complex stuff like we know this structure is a settings clause for SQL and if you notice these blocks, this is how we have this smart selection. Basically we select it by trees and this is how we have introduced expression basically. We know how to select because we never work with text. And internally all the code inspection analyzes and refactoring works based on this. So we have forest of trees and within there's some scope of function. We have for example here, we have tracking for values. For example, if you assign something to file variable we will know what this function have returned and track the assignments here. We have two types of analysis. Analysis which runs locally when you open editor and analysis which runs in background basically eating your battery. But all these smart completion features really depend on it. And we recently introduced two features which are visible to public and two features which are not has been released. I will show you in a moment. For example here you have a simple snippet with very strange warning. Unhandled exception here. Basically here inside this very simple code it can be really deep in your framework. I have thrown new exception. So IDE will tell you that this code will never finish running. And this analysis works by actually simulating the execution of PHP. So PHP Store never runs any PHP code in any way. But inside of itself it has totally different runtime with broken PHP code. Basically with incomplete statements. If you have something like this or basically like this even PHP interpreter won't be able to help with you. But here in PHP Store you have still the refresh and integrity for this interactive is intact. And also we differentiate between read accesses, write accesses and this is the result of type tracking engine working at Brigham. This is my area of expertise. What I was doing for PHP after creating like lexer, parser and editor with highlighter I was working on this engine which is so we have some new and exciting stuff. First of all in new versions this engine was rewritten. It was the fastest engine. Basically you all choosing PHP Store instead of Eclipse because of this engine. And soon comes a new version of this engine which will be both faster and will allow us to provide you completely new features. Like I showed you this exception. For example if I will comment this line this will there is no exception thrown in the real time. But there is a new error. This is the thing that nobody saw yet and it was not denied to public. Basically it has new kind of vision. You see the vulnerable function here. What's that? Basically right now most of internet runs on PHP. Like 85% of all the websites out there. And all the time we hear about security problems, breaches, stuff like that. And security is hard. I mean thinking in advance about how your code not might but will be exploited by some people maybe outside, maybe inside a company it's hard. It's hard to write the product that works and then to make it fast and then to make it secure nobody usually reaches the last point. You may put it some sandbox, like Firewall and stuff like that to think you might be protected but usually this doesn't help. So like we're helping you to write the correct code in the IDE so you don't have run time errors. Basically you try to call something like this. It's undefined function. It will fail in browser dump a stack trace. People will know what's inside the code. You don't want it. But when you have your code working, this code will run. It will dump something. But the source of this file is unknown. Maybe users have uploaded this file to your system. And you are right now reading it and output into screen. And output will be rendered in a web browser. And basically for a web browser your output is executable code. So right now you have a code path which is unsecured. Basically something maybe tainted. This is like terminology. And you need to keep it on mind. It's really hard. So with the help of new type tracking engine we can track not only the types of variables. This is maybe string, maybe int, maybe some class. But basically they are like flavors or tints. If somebody data wasn't secured or comes from dubious source like basically everything which wasn't explicitly sanitized should be treated like potentially like tainted data. Excess injection, JavaScript injection, database injection, whatever. All these types of errors have the same source. So if you take a look at this warning here for example, if you press quick help it shows you input variable to this file variable is tainted. You can go to definition you can go to definition here. You can try to analyze it and see that taint this section is new. And this is like work in progress. So there is not a file functionality that I can show you. Basically in the end you will be able to get reports that there is a feature also not much known. If you stay here like I did go to declaration find usages and go to declaration basically I am trying to analyze data flow to this point. And we have a special function which basically can help you to do this. You can go to actually I will find action so for small project for big project so basically there are two code paths to this place it can use this one this might work might not work so in the end we have same point. In the new interface you will be able to see taint, flavors, markers directly. And we are not limited to this type of markers. Null ability, like dreaded Java now upon the reception you will have the same in PHP now. You have strong types and all type of errors basically you can attach advanced type information to any type of data. We just marked these functions some functions or some variables like global variable get or post what you got from user and your request or what you read from database like MySQL query Output of MySQL query is insecure because you are not sure somebody did not edit database while application outside of the application you have to sanitize it before output into user screen and input parameters to MySQL query also should be sanitized for example so MySQL query is both sync and source of taint data Next. And this also checks it in real time. For example, if I dump this variable here, it's vulnerable here it's not. This function is a sanitizer it cleans output taint it can pass through and define function for example you can define your own custom functions we can recognize like escape something which will remove particular tints for example or maybe other type of escaping will clean the particular tints here this is some we did just for experiments So, a quick look how it works inside So inside of PitchPixel like I told you we never execute your code but we basically build control flow like assembly of your code maybe similar to PitchP does inside of it or how maybe extension see all the code pass in your code while your code is running it looks little bit cryptic but basically this simple set of statements here is a branch here you can go or not go into this code and the type of a page variable basically here a bunch is it's what if you will be debugging this you will step through debug and see a page is visible and has some value or isn't visible has no value and the IDE while it's running it sees it like this basically if you go inside this branch not is set the type of the value is empty definitely or if you go post this expression the type of this variable is set and basically due to some we also directed in please type conversions and merge them for you this is work in progress this is how we check stuff in PitchPixel actually thousands and tens of thousands of tests this is my actual test data I was just working before and you can see for a new engine we still have some errors which will be fixed obviously we miss some stuff but it's much faster and tracks much more information but we already have plenty of inspections and we add more inspections and all this stuff is really hardcore if error helps you or not we may you may be impressed by this particular functionality but maybe you have some needs in your project for example you have the best practice or like FAQ for you new employees please do not write code like this do it like that and you have no inspection or for this particular your custom framework or rule and you wasn't able to configure it you may have some problems like PHP code sniffer or maybe PHP 10 or whatever and trying to make this inspection for PHP I mean there is plenty of plugins and some of them really advance and do a lot of stuff but it's hard it's job development stuff like that you have no time but still it's like we also face the same problem getting up to speed and have a code review and in each code review for many people I and my colleagues have to repeat please don't do like this this is the problem which wasn't solved before and we have found solution for ourselves I will try to show it for you basically it's ability to define these things you say to people and ID will check them for you and show them directly in the editor so before sending a review to you personally will see in the editor your custom rules and these rules are really powerful because they can completely utilize all these technology inside of PHP Store for example if you have code sniffer you can only check some very local stuff in PHP 10 you have something similar to what PHP storm has inside referential integrity type assertions more advanced stuff but still there is no way to make advanced research I will show you experimental basically this feature was in PHP storm or all our products for many years but it wasn't underutilized we have it configured for our own project and it looks scary but we made it work nicely so I will show you how it works it's called structural solution to place some process for our platform for example for database tools they own best practice database mobility must be public and this is like a template and it's very special you see it looks like it's Java code basically and there are some assertions on this it's too simple maybe like this like performance thing do not do if start with something substring do it like this so this will show in my editor and my colleagues introduce these rules on the fly as they redesign our APIs so then I open file that was green like last time I checked it and changing something and did my work but I see I make a commit test a green but my file is still like yellow here I have some warnings this will be one of these and this is the what do not to do and this is a quick fix I can fix it immediately so my workflow is like that after I touch something I go and see for these special inspections to maintain my codebase to up to new standards because your vision of how your code should work is constantly evolving 65000 classes, for example, and basically like 800 modules with custom API so when my colleague in database makes some new cool API or new convention or fixes something or even not fixes found something is not performant like here maybe and he can go and like refector maybe 800 files by himself he won't do it because he will break something and stuff like that but so we define for you a workflow how to make your project evolve with you with your company, with your standards with your vision and I will show you how it works will be working now for PHP without all this stuff basically you can go to basically structure in here replace actually you can select PHP but PHP has now more advanced support than Java or JavaScript but right now it's like nothing here these results are really complex it's not easy to distribute this within the project because how many of you check .idea folder into your source control why you should this is the point of this folder there are only the shared settings the stuff like port style inspection settings you can have the inspection settings defined for your team and nobody should relate could commit the file until it's green this is the idea this is how we work this is how PHP storm is like evolving for 9 years with this speed question it won't be ever changing and the files which are machine specific workspace are automatically ignored and never checked in and basically we already have the situation here everybody has this dot ignore something press it along the 15 years of our project our vision for these files also have changed but once we broke the trust of the people and make these sudden changes people just ignored it once and then it's just broken so we will be redoing that folder may move it into other place to share you what should be shared basically if you go to settings most stuff here like I don't know like inspection you see the profile it's stored in project this is stored in id stored in project should be shared you can export and port it stuff like that and still for like we did with the rest client we moved away from forms we do not do graphical interface good we do editors grade so we moved everything into the editor so we do the same with this SSR basically also you do need like to quote anything this SSR running background so there is a test project with my quality created for me and here is this one some examples like very simple example this is like snippet of PHP code it's not complete super simple that cast some variable and this is the constraints we should like completion here for possible values it might be not working yet anyway you see this run button here so if you can try to experiment write something basically copy paste something for your code you run it it captures only one thing which you copy pasted then you edit it little bit to make it capture all what you need all things and then you can run it basically and see all the cases and while you edit in this you see it automatically in all of your editors if you commit this file use discussed with the project into special folder maybe metadata everyone who opens it in PHP storm will see in their subsystem and their file will see these notifications and you can define the replacement to play it also here can be like just remove this cast like quick fix we have there is no fix at the moment but it will work like that and this is like really simple case but inside it's basically it's actually doing what it does for example I can show you more advanced cases like magic methods course but for example you can have a type constant for this variable so it's not like you have some variable you can utilize PHP storm engines to check the variable type for you but basically you cannot do it by any other way because to decide whether to replace or have a variance here you need to trace the code back and see what the actual type here is and the idea does it for you and maybe this is a good case this is basically a control for example we have some code here this is like unconditional break within the loop this is potential error you may have a requirement in your company please do not write code like this because it breaks and we can see all the examples here and if I include this into the other kind of statement I guess it should disappear because it's just works I mean you have like the referential integrity within some scope like function or method you have a referential integrity between the members of class for example you have a referential integrity between your files in your project in libraries and within this method we can make the control for based assertions on types and actual values and at some point basically a taint is like abstraction of the value we can even tell you your loop doesn't finish because we can mark the e like it's 0 and up and your condition is less than 0 and basically these types never much it's like code symbol execution this is what these things here in IntelliJ like test for example on strings let's say some complex stuff yeah maybe like this for example in PHP every because we have we don't have core site declaration whether it's a point reference to variable in parameter or not any function can change your parameter you have to go to definition and check it out it might be somewhere inside of your call hierarchy so we have these symbols which are basically like a symbolic algebra we compute it for you but all you have to do is like take care and take a look here at your warnings this is what I wanted to show you what's come in PHP Store and of course having 700.000 users around the world working on their laptops maybe in the train or airplane or just working on their desktop we try to make it as fast as possible because like people joking about carbon footprint like the best thing for carbon footprint is not living or not having kids but I can improve situation differently by fixing performance like improving performance like 10% and in next version I save many lots of power and hours of your time thank you thank you LSE for the talk if you have any questions do visit the sponsor both outside and their team can answer all the questions that you have for yourself or your company so next up let's give here another round of applause thank you


The next item of business is topical questions, and at question number one, I call Carol Mocken. To ask the Scottish Government what its response is to comments by Prostate Cancer UK regarding reported figures showing that men in Scotland are more likely to be diagnosed with prostate cancer too late for it to be successfully treated than in other parts of the UK. Cabinet Secretary, Humza Yousaf. We have noted this prostate cancer UK research, and we are discussing it with clinical experts right across NHS Scotland. Staging prostate cancer is often complex, and while prostate cancer UK's data from across the UK nation shows apparent variation, we are investigating this further. It's important that we understand the data in greater detail. I have asked my officials in that vein to reach out to prostate cancer UK for dialogue in this respect. When we compare survival rates, which is arguably the most crucial measure for any patient, Scotland's five-year survival rates for prostate cancer is 84.3 per cent and are very similar to other UK nations. I thank the cabinet secretary for that answer. It is important that we listen to the figures. The figure for individuals being diagnosed too late to be successfully treated in London is 12.5 per cent. In Scotland, that figure is not far off three times as high at 35 per cent. The cabinet secretary must accept that this is an extremely concerning gap, creating a picture that the chief executive of prostate cancer UK has called particularly shocking in Scotland. Does the cabinet secretary accept this Government's responsibility in addressing health inequalities in Scotland that failures in the SNP Government are now leading to the unnecessary and avoidable loss of life? I don't accept the characterisation partly because of the response that I gave to the first question that Karen Watkins asks. That is survivability rates. She's asking about the impact of potential late diagnosis. We know that late diagnosis can affect the outcome for somebody in relation to any cancer type, let alone how important it is in relation to prostate cancer. When I look at those survivability rates, the five-year survivability rates, Scotland is 84.3 per cent. She's right that England is slightly higher at 86.6 per cent, but we're not far off kilter in relation to other UK nations. We want to, of course, see improvements in that rate, and what I would say to Karen Watkins and where I agree with her is that there's no doubt of the link between inequality, whether that's inequality in relation to wealth inequality, socioeconomic inequality, that clearly also impacts health inequalities and that's how we're focused on addressing the inequality gap. I should say that I have good dialogue with prostate cancer at Scotland and it was at their march for men a number of months ago, so I'll continue that dialogue with them and we'll continue to invest in reducing the inequality gap that currently exists. Thank you. Cabinet Secretary, I laid out the figures, which are quite stark. Public Health Scotland data released in 2020-21 highlighted that, and I actually quote, there were convincing evidence that socioeconomic deprivation increased the likelihood of being diagnosed with more advanced cancers of the prostate. Indeed, in a further data published in 2022, there was a 10 per cent fall in the number of people diagnosed with prostate cancer linked to under diagnosed caused by the pandemic, of course. It is absolutely essential that the Scottish Government acts decisively to ensure that men across the country are made aware of the options available to them in terms of tests, checks and online tools, which can both protect their own health and combat the impacts of health inequalities. Does the cabinet secretary accept that he must take those figures seriously and make sure that those items are in place? Of course we are taking those figures seriously. It is why I said in my opening response to Carol Mocken that I have asked a variety of NHS experts to give us some clinical advice on that data, so we are not dismissing the figures by any stretch of the imagination. I hope that nobody has got that impression. What we want to do is to understand the detail greater, but there is no argument between Carol Mocken and I that we know that inequalities lead to worse health outcomes. That is why our focus is on detecting cancer early and getting into those communities where we know that there is inequality in areas of higher deprivation. She will also know about the excellent work that we are doing in relation to rapid cancer diagnostic services. She may have seen the interim evaluation that was conducted that shows that it is having more of an impact in areas of higher deprivation. We will continue to invest in those that we are rolling out another couple of rapid cancer diagnostic services across Scotland. We will continue to engage with Prostate Cancer UK and, in fact, in our new detect cancer early public awareness campaign, which is due to publish in the spring of this year, we are already in dialogue with Prostate Cancer UK to source case studies to support the campaign. Emma Harper Research has shown that the burden of cancer is not felt equally across society. The cabinet secretary has outlined that people living in more deprived areas are more likely to get cancer and are, sadly, more likely to die from the disease than folk living in less deprived areas. Can the cabinet secretary just reaffirm what steps that the Scottish Government has taken within its powers to tackle the root causes of poverty and associated health inequalities? Emma Harper I associate myself strongly with Emma Harper's remarks. She is absolutely right that the Government's real focus should be and is on trying to deal with the problem at source, i.e. dealing with poverty and inequality that exists in our communities. We are targeting our actions to areas and communities most in need, seeing what more we can do, but we have provided free school meals. We increased the number of hours of free childcare. We have recently increased the Scottish child payment to £25 per week. We have also supported 1.85 million households with council tax reduction. We have operated all benefits. We deliver by 6 per cent and we continue to deliver free prescriptions, concessionary travel and free personal care. We continue to do what we can to try to reduce poverty and inequality within the constraints of the current devolution settlement. Jackson Carlaw I admit to a significant prostate cancer concern at the start of the pandemic, which had a bearing on decisions that I made in my personal and professional life at the time. I say that notwithstanding that and notwithstanding the constraints of the pandemic, the treatment that I received was comprehensive, professional and timely. I think that it is important and I hope that the cabinet secretary would agree with me that the key thing is that for men who have any of the symptoms associated with prostate cancer, not to be concerned about any embarrassment that they may feel arising from that, but to present themselves to the health service at the earliest possible opportunity. By doing that, they can, like me, hopefully expect to survive safely. I absolutely applaud and am grateful to Jackson Carlaw for sharing his own personal and professional life with me. He does not owe that to anybody, but by doing so, I hope others who are listening are hearing what Jackson Carlaw has had to say. That is why I made reference to the detect cancer early programme in dialogue with Prostate UK. He is also right about the stigma around prostate cancer. I was at a men's group at the Maggie Centre in Edinburgh and the men's group there was a huge source of comfort and relief and support to them, because they were able to talk about issues that were quite intimate, make light of it in certain regards and have that conversation with other men that they felt that they couldn't have even with their partners or let alone anybody else in their family. Jackson Carlaw is absolutely right. What I go back to, and Jackson Carlaw will absolutely take this, I know, in the spirit that is intended, we really need to focus in particularly in those areas of higher deprivation, because Jackson Carlaw is well educated, he knows about those issues, he's been involved in politics for a long time, his public understanding of those issues I suspect is very, very high. What we really need to do as a Government is ensure that we focus in those areas of higher deprivation where we know that public awareness isn't there at the same level. So that will be a continued focus, but I end where I started in thanking Jackson Carlaw for sharing his own experience and wish him all the very best in his health. Question 2, Jamie Greene. Thank you, Presiding Officer, and can I attach myself to the comments made by my colleague, it's a very welcome recovery from our benches. To ask the Scottish Government what its response is to reported comments by the chief inspector of the constabulary that some Police Scotland officers lack empathy and show outdated attitudes in domestic abuse cases. Cabinet Secretary, Keith Brown. Police Scotland undertake excellent work in dealing with incidents of domestic abuse, but the recent HMICS reports and the comments are around the victim experience highlights that more needs to be done. While operational matters, of course, are for the chief constable, we remain fully committed to using available resources to support the delivery of effective and responsive policing, and we are continuing to make changes to make it easier for people to report incidents and to perpetrators to be appropriately dealt with to help realise our vision of a Scotland as a place where women and girls live free of violence and abuse. Jamie Greene. Can I thank the cabinet secretary? More does need to be done because the police are the first point of contact in 85 per cent of domestic abuse cases, but the survey was quite clear around the overall perceptions people have on that experience. It was described as not very positive by 60 per cent of respondents to the survey, and many felt that the police had not provided the appropriate response to the initial reports. 50 per cent wiringly said that they felt that the police had not taken their complaint seriously at all. Many victims also, and I think that this should worry us, said that they had not bothered to report future cases of abuse because of that initial bad experience of reporting. So can I ask the cabinet secretary, given that, as he said, the lives of many vulnerable women are at risk in these situations, what discussions has he had with the chief inspector since the report produced these wiring findings, and given that the police are often doing the jobs of other emergency service workers and are already overstretched and overworked, what is his Government doing to support them in their delivery of supporting domestic abuse victims? First of all, I thank you much of what Jamie Greene says. I would agree with and I think on the point that he makes about the progress that is still to be made I am happy to acknowledge that point, as I think the police would do so as well. On discussions with the chief constable, for example, I think he would tell you that if you compared the response of the police, the domestic abuse when he started out as a constable compared to where we are at now, he would say that there has been massive progress before it was a closed door beyond which the police didn't go. That has changed fundamentally. However, I acknowledge and I think the police would acknowledge the fact that there is a cultural issue to be dealt with here as well. They are in the process of dealing with that issue through training and also the leadership that we have seen from Fiona Taylor and the chief constable himself over a number of years, so that is the main thing that can be done in this regard. If we look at the 14 different recommendations made by the inspector, I think that these touch on issues which the police are very well aware of, they know that they have to do more. As to further discussions with the police, whether chief constable or a senior officer, they will happen at the next meeting that we have for the chief constable, which should happen in the next two or three weeks. There is much interest, so concise questions and responses would be appreciated. Jamie Greene. Thank you. The reality is though that over the last two years we have witnessed the highest number of recorded domestic abuse incidents in Scotland since records began. It is entirely unclear whether that is a rise in reporting, a rise in cases or incidents or both. That data is lacking in this debate. It also makes clear the vast amounts of demand that it puts on a police. One victim said that it took police two days to arrive after making a report. Another waited two weeks before the police spoke to the abuser. Does the cabinet secretary share my genuine concerns that when victims of abuse need fast and empathetic responses to reports of domestic abuse for far too many in Scotland, that clearly is not happening? What is his message directly to those victims of these crimes? Those who were brave enough to report that abuse but have now simply and quite understandably lost faith in the system? I would say that my response to the victims is that we are aware of the shortcomings of police. We are aware of those shortcomings. This report by the inspector is very important. As was last week's report that came out around the early implementation of the DASA regulations, which show that real progress has been made and people are more likely to report because of that new legislation, world-leading legislation. We know what we have got further to do. We have got the policies in place. We need to see further progress in dealing with these. We will continue to fund the police in order to make sure that they are doing it. There was a reduction last year, I think, of 1 per cent if I'm correct, but we know that many instances are not reported, so we know that's the type of the iceberg and we'll continue to try and tackle it. Katie Clark. Has the cabinet secretary had the opportunity yet to look at the report published early this week by the University of Edinburgh, which reviewed the experiences of victims and witnesses in domestic abuse cases since the Domestic Abuse Scotland Act 2018? It found that, despite the legislation, domestic abuse victims still find the justice system traumatic. What further action does the cabinet secretary believe can be taken to reduce the trauma that domestic abuse survivors experience in the justice system? In addition to what I have laid out already, if you look at some of the recommendations that are made in this report and I acknowledge the report that Katie Clark mentioned, I think that was the report from last week. It's a small sample around 69 people. It did say very good things about the introduction of the new legislation but pointed out where else we had to go. If you look at the recommendations you can see what has to be done there to improve things. For example, making sure that offering the gender of interviewing officers is right for the victims is very important. Also making sure that those officers are trained in how to deal with domestic abuse situations. Also, perhaps the biggest challenge is in relation to prevention, very hard to deal with. But if we can get to the situation where prevention can happen, especially where it might be a repeat offender, we'll make massive progress there. Between ourselves and the police and what's happening in the courtservice where real priorities have been given during the recovery from the pandemic to deal with this, we can make further progress and so we should. Thank you, Presiding Officer. The recommendations outlined in the HMICS report for Police Scotland suggests that domestic abuse training should adopt a trauma-informed approach and or the lived experience of victims. Similarly, the Domestic Abuse Scotland Act 2018 interim reporting requirements finds that increased training and understanding a more informed approach on domestic abuse by justice professionals could improve victims experience of the criminal justice system. Therefore, can I ask the cabinet secretary what action the Scottish Government is taking to ensure that a victim's entire journey throughout the justice system is person-centred, informed and responds to their needs? It's a very important point that Pam Goswell makes. We have dealt with this through the victims task force, whereby we have said that all the different groups involved in this area have said that we have to have a justice system where every single part of it has undergone trauma-informed training to ensure that they have a trauma-informed response, as Pam Goswell mentioned. That means that every single person in the system has to have added in my training, such as it is so far, and I'm sure that I'll do further training as well. However, you're right to say that for the victim, it's the entire journey through the justice system. If you've got one part of the system that's working very well, where everyone's very well trained and informed, and you get moved on to another part where that's not the case, then your experience is going to be a bad one. I'm not saying that's going to be done quickly. It's part of a justice vision that will take years to make sure that we do that. However, the biggest change that we can make within the justice vision is if we can get to that situation where the entire system is trauma-informed person-centred and it's a trauma-responsive reaction that you get from the agencies, that's what we should be trying to achieve and that's what we're setting out to do.