OTAN, Outreach and Technical Assistance Network. Hello everyone, my name is Anthony Buerk. I'm a project specialist at OTAN. Welcome to today's OTAN Tech Talk. I would like to introduce our presenter today, Yesenia Delgado Lorenzo, Adult Education Counselor at Hacienda La Puente, Adult Education. Yesenia's topic is best practices for teaching online. Let's get started. Take it away, Yesenia. Thank you, Anthony.  Here we go. Thank you so much for being here today. So my name is Yesenia Delgado Lorenzo, and I am a counselor at Hacienda La Puente Adult Education. I've been an instructor for the last 10 years. I've taught academic and CTE classes. My focus of research and study has really been online learning. How do we teach online courses and what do students grab from them? Like how do we get them to complete the course? How do we get the most retention out of our online courses? So today I'll be sharing the best practices for teaching online. I'm going to start off with a quote, and this is one of my favorite quotes, which is technology will never replace great teachers, but technology in the hands of a great teacher can be transformational. And I have seen that throughout my classes. It's utilizing the technology that we do have to better our practices and to engage our students. Today our goal is really to review some empirical best practices for online teaching and discuss how we can apply these best practices in our own classrooms. So we'll get started. I have 10 best practices that we'll discuss through this presentation. The first one is, so the first best practice that research has shown us is to be present in our course site. So even if you're teaching a course that's 100% online, time and time again, research has proven that teacher presence is the key to retention and student participation. I've taken a few classes myself where the teacher is completely away from the course and we're just basically interacting with the course material or the learning management system. So one of the key things that we've learned from research is that the teacher, the instructor needs to be present. So according to study surveys, the best online faculty are instructors who show their presence in the course multiple times a week at best daily. So also setting clear expectations as to when you will be present and when you will not be present as many of us are juggling multiple tasks. It is difficult to continue to answer all those messages from our students but providing them with that clear expectation of your messages will be responded to in 24 hours. It's gonna be helpful for the students knowing when is my teacher present? Are you available from nine to 12 in the morning? Are you available from five to nine in the evening? So setting those course policies is gonna be very helpful and it's gonna also reduce you answering those constant messages or those constant emails throughout your entire day. So this is really gonna depend on your particular style, setting your regular times when you can meet with students virtually or in the classroom or answering their emails is gonna be invaluable to your time management as well. So that's our number one best practice. Our number two best practice is creating a supportive online course community. So a good strategy for developing a supportive online course community is to design a course with balanced set of dialogues. So when we're talking about dialogues is how do we communicate with our students, right? How do the students communicate with each other and how do the students communicate with the resources that we have set in the course? This means designing a course that has all three dialogues where students are able to communicate with faculty, where students are able to communicate with other students and where students are also able to communicate with what you've posted in your own course. So in most courses, the dialogue of instructor to student is provided through maybe mini lectures, maybe a text, maybe video or audio podcast. So even if, so even that communication style, if you are teaching a full online course, being creative and maybe doing a screencastify or doing a quick video of yourself explaining what they're expected to do that week and sending that out in the course messages. So then that student has that individual faculty to student dialogue, right? And then having those internal discussions internally where students are able to dialogue with each other within the course. Our practice three is to share expectations for your students and for yourself. So one of the things that we've learned over and over again in research is that this best practice cannot be overemphasized. So include on your course site a set of expectations of how students need to communicate and dialogue online and how they communicate with you. So providing them with examples if we're expecting them to do an online post or a chat, providing them with the first example, especially early on in your course as you start to set up your course, the first couple of group chats or the first couple of dialogues, we should provide assistance and provide an example if we're expecting the student to create a video and uploaded providing an example of that video. Another example would be many faculty tell students that they can expect a response within 24 hours during each week. Online learning is just as intensive as face-to-face learning. And sometimes I feel like online learning is a little bit more intensive because students really need to have their own time management and they really need to be able to be organized enough to complete the assignments on their own. So we need to provide those clear expectations of when they need to turn things in, being able to put in those due dates and provide them with that information and plan things ahead of time. So being clear as how much effort and time will be required on a weekly basis, keep surprises to a minimum to our students, being able to provide them how long should a task take them? If we're expecting them to do a specific activity, how long should it take? And giving that information to the students prior to that week, so they're able to justify the time that they need to complete that assignment. Practice number four is to use a variety of large group, small group and individual work experiences. So a community works well when there's a variety of activities and experiences. Online courses can be more enjoyable and effective when students have an opportunity to brainstorm and work through concepts and assignments with more than other students. At the same time, students work and learn best on their own. So building in options and opportunities for students to work together and individually is highly recommended. So as you break up your objective, being able to look at that specific objective that you want your student to learn and finding activities of, okay, how do I incorporate a large group activity into this objective? And then a small group activity where students are expected to maybe work with one or two other students and then incorporate a different activity where they're doing it individually and they're able to complete that activity on their own. So they can see their progress throughout each activity as they learn each objective. Our practice number five. So use both synchronous and asynchronous activities. So multiple online courses almost always use asynchronous activities. It is important to use the tools we have in the course management system, virtual live classrooms and audio tools to make it possible to do almost everything we do on campus. So bringing that element of the classroom on a full online class is gonna be important. We shouldn't have those students do different types of activities. We should find the way and be creative to make them almost similar to what we do in the classroom. If we do a group activity in the classroom, how can we bring that into an online learning classroom utilizing those break rooms and Zoom, utilizing the different resources we have on our learning management system to make those group activities. Plus we often engage learners in more collaborative and reflective activities. And what happens is recorded in archive and is there for their review. That is one of my favorite things about online learning is being able to record what we do. Being able to share with a student that has missed the class, the recording of the class. So they're able to come back and review those activities. In many of my lessons, I actually prefer teaching them on Zoom, especially when it's something that I know my students are gonna need to review. I almost prefer teaching it on Zoom because I can record it. They have that archive of coming back and watching a step-by-step process online. There's nothing better than real-time interactive brainstorming and sharing discussion. So those discussions are really rich resources for our students that they're able to come back and review them. For example, real-time problem-solving questions and answering review sessions can be very effective for the learning experience. And it also allows to build our students' self-efficacy, right? So when we start looking at self-efficacy is how do we scaffold that learning, right? Providing those instructional support systems early on to build in multiple opportunities to practice and gradually remove those supports. So as we're able to present this material in a group setting and we're able to record it and our students are able to come back and see it, it's building in their self-efficacy. It's building in that positive influence and that motivation that they can do this on their own as well. Practice number six. So early in the course, get feedback. So course evaluations are usually called post-evaluations, right? So we usually do them at the end and they're usually done after the fact and nothing can change or increase the satisfaction to facilitate learning to a class that has just completed. You want that feedback, that feedback is so important. But research has also showed us that early feedback is just as important. So early feedback surveys or just informal discussions to ask students to provide feedback on what they're currently working on in the course is going to be helpful to you to better the course experience, right? Especially as we're teaching online, we wanna get that feedback from our students of what is working, what is not working? What are they having trouble with if we're utilizing any online tools? We want that feedback early on so we can provide resources, so we can go back and reteach that specific technology that we're trying to get them to learn because as we teach our students, not only are they learning a new technology, they're also learning course content, right? So we wanna get that feedback on how are these tools working for you? So early feedback, those early surveys are gonna help us find out what's really going on in the back and it's gonna give us that early feedback so we can make those corrections, we can make those modifications as we go along, not just getting early feedback on what they're learning, but also the early feedback is important on how the course is going. What do they like? What don't they like? Especially early on in the course so we can engage in and capture those things we wanna change so they can complete the course. Practice number seven is prepare discussion posts that invite questions, discussions, reflection and responses. So discussions in an online course are equivalent to class discussions in a face-to-face class. The key difference, of course, is that discussions are asynchronous, providing time for thought and reflection and requiring maybe a written, a video, audio responses that become part of the course archive. So these are gonna be really important according to research, discussions, really the purpose is to provide an open question and surf forum to encourage critical, getting creative thinking, reinforcing domain and procedural process and really to achieve that social interaction and community building within our classroom. So one of the first activities that I usually do for all of my online learning classes is, I build that community because I want them to feel comfortable in the classroom posting their posts. So for example, the first activity that I do in my online courses, if I'm gonna use discussion forums every week, I explain what the discussion forum is and maybe one of their first activities is to post a picture of their favorite shoes and provide a story as to why they're their favorite shoes. So I use the teaching of the online discussion board and how to use it, but then I provide a really simple activity to build community within the post itself and to kind of guide the students to let them know, like, hey, every week you're gonna have a post and these are the expectations and we kind of build that community within it. And it also, as we build these discussion courses in the learning process, it validates their experiences, it validates what they're learning. It helps support their own reflections and their own inquiries. So at least that minimum, depending on your course, right? We should have discussions daily, weekly, depending on your course time and what the expectations are for that course, but we should definitely be taking advantages of this course in ESL, one of my favorite things to do when we were learning fruits. And I taught ESL literacy over the pandemic and it was super difficult to try and teach that class through Zoom, but it was interesting, my students were resilient. They had to post a picture of something they ate that week and explain the food of what they ate and even my literacy students found a way to communicate in English and in a very, very simple sentence, would be able to upload a picture of an apple, a picture of a banana and explain this is a fruit, it is an apple, right? Or whatever they were experiencing and it was pretty amazing to see the validation of their learning from that week. Practice number eight, focus on the content resources and links to current events and examples that are easily accessed by learners' computers. So if content is not digital, so if the content's not digital, it is as if it doesn't exist to our students. This means that content that students will more likely use is content and applications that are available from their computer. So we also have to think about what we're posting for them, right? If it's a PDF, is it accessible on their phone? If they're only using their phone to access the class, what format are we utilizing? One of my favorite tools is Google Drive, sharing documents through Google Drive because you share that link, they open it and no matter if they're accessing it from their phone or a computer or a tablet, it's easy, it's accessible. So are we actually uploading a PDF into our learning management system or do we wanna upload a link? Which one is all formats accessible through the use of what your students are using for the class? So students want to be learning everywhere, especially those students taking those classes online, they access the course at any time and often while they're doing other things, many of our students are working parents and they're watching your videos while they're cooking dinner at home. So we wanna make things as accessible as possible for them. So content that is mobile and content that can be accessed through all devices welcomes students to access that content. And this really also kind of falls into place with expectancy value and the rationale that include a discussion of the importance and the utility value of learning, them wanting to take the content that they're learning at that time and apply it, not just the content that you're teaching, but also the content of the technology used as well. They wanna be able to apply it. Many of our learners are learning the technology as they're taking our course and they're learning in our course, they're learning new things, they're learning how to access new links and a new learning management system. So practice number nine. This best practice combines a number of basic learning principles explained in length in other resources. So very briefly, it means that faculty identify core concepts to be learned in a course, the performance goal and then mentor learners through a set of increasingly complex and even customized projects applying these core concepts. Supporting learners with their personal goals that are closely linked to the performance goal of the course and even beyond the course is a win-win for learners individually and as a class. So we wanna combine our course concepts with our personal learning goals that our students have. So that's really us as instructors getting to know our students, right? Being able to match up their learning with their own individual lifestyles and what their learning goals are for themselves. So another key principle that aids in the concept of learning comes from Vagosky. He notes that concepts are not works but rather organized and intricate knowledge clusters. So this is a simple but profound principle. This means that while we must teach in a linear fashion presenting concepts individually and in small clusters is gonna really allow our students to link them up to those real life scenarios. And here's just a little bit on principles of information processing. We wanna break it up as much as we can into small little clusters that they're able to grasp and comprehend. So we wanna present information in manageable parts. That's why one of the things that I do in the beginning of my course, my first couple of classes, I'm really just focusing on them learning the learning management system and then learning the different applications that I'm gonna use in the class. So I'm kind of setting them up for success by pre-training the concept of the technology before I start to develop mastery in the course content itself. So first I wanna develop the mastery on the tools that they're gonna use, the different links that they're gonna access and then I start to bring in all the other different pieces or the different objectives that I wanna teach for my class. Our final best practice is plan a good closing and wrap up activity for the course. So of course, as the course comes to a close, it's easy to forget the value of a good closing experience in the final weeks of the course. Students are likely to be stressed and not take the time to do the list and the planning to help them reduce and calm stress. So remember to take time and remind students of the final course activity but designing a course activity that closes your course and encompasses some type of learning reflection and the integration of the knowledge that they have learned both the content and the technology itself, maybe utilizing the tool that you're using to teach your online learning tool for them to present from. So these are gonna be some really good student presentation, some student summaries, analysis of the course where they're able to provide their insights and their knowledge to really show us what fundamental principles they've taken from the course. So this was a really quick synopsis of the 10 best practices. Each one of these can be taken into an individual training and we can kind of take each one of these and apply different technology tools that we can use into each of them. So just a reminder, this is only a quick synopsis but if you want the full presentation or if you need, please make sure you contact O10. I'm gonna leave you with a quick thought. So E-learning can cover up to five times the material of instructor-led training in the same amount of time. So if we utilize our learning management systems properly, we can cover five times the amount of curriculum that we normally would, right? And it's just setting it up for student success. So having said this, I'm gonna go ahead and close out today and I'm gonna hand it back over to Anthony here at O-10 and it's all yours. Thank you, Yesenia, for all of that great information. O-10 would also like to thank all of its viewers and if you have an ed tech tool or tip that you'd like to share with the adult education field, email your O-10 Tech Talk idea to us at supportatotan.us. Please also subscribe to the O-10 YouTube channel where you can watch a number of videos on a variety of technology related topics, including previous O-10 Tech Talks. We'd also like to remind you that O-10 is a leadership project for adult education in California. And if you are at a WIOA funded agency, you can contact O-10 for additional services, including face-to-face and online, hands-on professional development at your site. Visit the O-10 website at www.otan.us or contact us by phone or email. Thank you again for watching today's O-10 Tech Talk.


ot a grant to anyone, it is an investment from the private sector. That is what we have to talk about. That is the kind of initiatives that we have to discuss. I know that the minister is going to come in and talk to us about Falkirk, but that is the type of thing that we need to be investigating. We have been at this for five years with the pension funds. The problem with the pension funds is that, if they were to fund the entirety of the houses being built by the housing associations, the rate of return from the current level of rents would not be enough. That is part of the reason why they are not investing to the level that I would agree that they should try to attract. In order to do it all by pension funds, we would need to increase the rates very substantially, well above their current levels. The cabinet secretary missed the point that I said that they did not all have to come from that. That is an example. The commission also reported that a cold home is neither conducive to good health nor a satisfactory learning environment for children and young people. There is a particular problem of potential hypothermia for older people who are unable or unwilling to pay to heat their homes to an adequate level. That highlights the need for improving the energy efficiency of homes to be a key part of the Scottish Government's approach to improving wellbeing through housing policy. I totally agree with Clare Adamson on that and commend the excellent work that is being introduced by the BRE at Ravenscraig. However, like the existing Homes Alliance Scotland, I welcome the Scottish Government's recent commitment to making energy efficiency a national infrastructure priority. A similar approach was a Scottish Labour Party policy in our manifesto for the 2015 UK general election, so we are glad that the Scottish Government is following our lead yet again. However, the Scottish Government has not yet set a long-term goal for the national infrastructure project. The commission on housing recommended that regulations requiring owners to insulate their homes should have a part to play in securing the necessary improvement in insulation standards. The existing Homes Alliance has also, for some time, supported the use of regulation in that regard, and I have to admit that I see a lot of merit in the argument that it makes. However well we construct our homes or improve existing stock, we must first and foremost build the number of homes that people need. To begin with, I will ask the minister again. Can she explain why, based on the consequential funding that we have expected to receive from the UK Government, the Scottish Government would have received £600 million overall for the help to build fund, yet they have only announced £195 million over three years. Can the minister explain how the balance of funds is intended to be used and is it still in the housing budget? Shelter has suggested that it would require £200 million to meet its target from the Scottish budget. Will the Government commit to that type of funding? That is a vitally important question and the minister cannot duck it any longer. The minister cannot intervene either. I am afraid that you are in your last 20 seconds. I will conclude by returning to the commission. I cannot find a better way of drawing this debate to a close than by endorsing the conclusion of Robert Black and his team on the commission on housing and wellbeing, where they state that they have delivered a call to action on one of the most serious and challenging issues facing Scotland now and throughout the next decade. They do not wish their report to sit on a shelf. Faced with the current crisis in housing, I can assure you that we on those benches will not allow that to happen. The next item of business is a debate on motion number 14189, in the name of Angela Constance, on the Rehabilitation of Offenders Act 1974, Exclusions and Exceptions, Scotland Amendment Order 215. Any member who wishes to speak in the debate should press the request speak button now, and I call Angela Constance to speak to and move the motion. Cabinet Secretary, eight minutes. Presiding Officer, I want to begin by thanking you, business managers, committee conveners and members and parliamentary officials for your support and cooperation in facilitating an accelerated timetable for scrutiny of this order, amending the Rehabilitation of Offenders Act 1974, Exclusions and Exceptions, Scotland Order 2013. It is in the public interest to help to minimise the disruption to the operation of higher-level disclosure checks and thereby minimise the risk to public safety. Members may be aware that higher-level disclosure describes the overall system that allows for additional scrutiny of a person's criminal convictions. It is used, among other purposes, where someone wants to work with vulnerable groups, for example in a nursery, as a medical professional, or in a school, or where someone wants to work in a sensitive area such as offering financial advice. There are two aspects to the higher-level disclosure system. Firstly, it operates through individuals being responsible for disclosing information. Secondly, disclosure Scotland issues certificates containing conviction information held on central police records. Under the system of additional scrutiny, the information that must be disclosed by the individual and disclosure Scotland includes convictions that have become spent under the Rehabilitation of Offenders Act 1974. That information would not ordinarily be disclosed to an employer, but it is under the higher-level disclosure systems as it currently stands. The operation of those two areas can be seen as mutually reinforced with information given by the individual and completing a job application form able to be checked by an employer against information contained in a higher-level disclosure, such as a standard or enhanced disclosure certificate or a protecting vulnerable groups PVG disclosure issued by disclosure Scotland. In June 2014, the UK Supreme Court found that the system of higher-level disclosures, as it operated in England and Wales, breached a person's article 8 rights under the European Convention on Human Rights. Although the court fully accepted the need for additional scrutiny of a person's background, if that person wanted to work with vulnerable groups or in other sensitive roles, the court considered that the automatic indiscriminate requirement for disclosure of all spent convictions was not proportionate, as no assessment of the relevance of the information to the need for the disclosure was undertaken. And while the decision related to the law of England and Wales, we have considered its relevance to the higher-level disclosure system in Scotland, informed by developing thinking and case law in England and Wales and Northern Ireland on how the balance of competing rights and interests should be struck, and we have concluded that the reforms should be made to Scotland's system. This order deals with one aspect of the reform system, namely the responsibilities of individuals to self-disclose spent convictions and adjust the existing law governing those responsibilities. Those changes will be reflected and complemented by changes to the disclosure of spent conviction information by disclosure Scotland. Those will be addressed by way of a remedial order using the urgent procedure provided for in the Convention of Rights Compliance Scotland Act 2001. That allows for a period of public consultation and parliamentary scrutiny after an order is made. Expediting the procedure in respect of that order ensures that the responsibilities of individuals and disclosure Scotland to disclose spent conviction information will be aligned from the outset of the operation of the amended system. We believe that the changes proposed will put beyond doubt that the disclosure system in Scotland is compliant with the European Convention on Human Rights while also ensuring that vulnerable people and the wider general public are protected. While not all spent convictions will be routinely disclosed under the system, spent convictions for offences that are sufficiently serious, recent or relevant, will continue to be required to be disclosed by the individual in the circumstances set out in the 2013 order. The amendments being proposed to the 2013 order set out two lists of offences. One list contains the most serious offences, including serious violent and sexual offences, which will continue to be disclosed indefinitely, even when spent in relation to the types of work specified in the 2013 order. The second list contains offences in respect of which a new set of rules set out in the order will determine whether or not they are to be disclosed. Those rules take account of the period of time that has elapsed since conviction, the age of the offender, on the date of conviction and the sentence imposed. The order also adjusts rehabilitation legislation to take account of the amended system to be operated by Disclosure Scotland, in particular by ensuring that an individual need not disclose offences for which they may apply to a sheriff for an order to have them removed from our certificate until that application to the sheriff is determined. I want to reassure Parliament that members will have a further opportunity to scrutinise the underlying policy. After the 60-day consultation on the remedial order after it is made, we will consider whether any changes are required. If there are changes needed, those changes may also require to be reflected in the 2013 order. Any such changes would require to be made by a further affirmative order. I hope that that reassures you and members that Parliament will have a full and open role in the scrutiny process, albeit in an unusual format, with the views that it listens to throughout. I also hope that members will agree that those amendments are necessary to ensure that our system of higher-level disclosures continues to operate to help protect vulnerable people and the public more generally, while also balancing the rights of individuals. I formally move the motion in my name. Thank you, cabinet secretary. Before I call Cara Hilton, can I say that we have a little time in hand to get us to 5.30 so I would appreciate your co-operation and help me to do so? Cara Hilton, a minimum of six minutes, please. Thank you, Presiding Officer. I will try to speak slow, but that could be difficult. Today's short debate on the rehabilitation of offenders' amendment order is important. It is important to ensure that our disclosure system is fit for purpose and that we strike the right balance between protecting the public and enabling people with past convictions to make a personal and economic contribution to our society. As I have outlined, the cabinet secretary is a debate that has been made necessary by a number of legal actions in England and Wales and, ultimately, by the European Supreme Court judgment, which concluded that our higher-level disclosure system was in breach of article 8 of the European Convention of Human Rights. Scottish Labour appreciates that we must act speedily to ensure that Scotland is not in breach of human rights legislation. It is pretty clear, too, that the system up till now has not been perforated and it has not always been proportionate. We want to ensure that we have a disclosure system that ensures full and thorough scrutiny of people working with vulnerable groups and that protects their children and young people, but it does not automatically require everyone to disclose convictions that maybe occurred a long time ago and does not take account of the age of the offender at the time. The order really is, but ensuring that the right balance is struck and that we do accept the Scottish Government's case for change. However, we are concerned about the speed in which the order has been implemented. Tonight, we are being asked to agree a draft order that was only laid on Monday 7 September. That is just two days ago, yet this is in response to a UK Supreme Court decision made back in June 2014. In theory, there have been 15 months for this to be properly considered. I know that this was an issue of debate at yesterday's delegated powers committee. In this morning's papers, the Herald described the Government's approach as scrambling to change the law within two days with no real time for proper scrutiny or debate. I do not think that that reflects well on our Parliament. I do not think that this is the best way to amend legislation that touches virtually everybody's lives. I thank the member for giving way on that point. I think that one of the reasons given at the committee yesterday was that, because there are 1,000 disclosures a day, holding that up for three days meant that there were 3,000 disclosures not happening or at least delayed. I think that the committee kind of accepted that that was probably acceptable. That is the fair point, which I think is going to come to in a couple of pages time. However, for the public out there, people think that the European decision was made last June, surely Parliament has had time to consider that by now. It deserves a lot better scrutiny than two days. Central to our focus in the disclosure system should be a responsibility, the primary responsibility should be ensuring that our system is robust and that it offers the best possible protection for children, for young people and for vulnerable groups and to the organisation requiring disclosures. It should not be a bit of a rush to avoid legal challenge. Indeed, I echo the report of the Delegated Powers and Law Reform Committee, who stated that the Government's approach was most unusual and not one that the committee would see becoming common practice. I know that the cabinet secretary has acknowledged this today and that in her letters this week to the Justice Committee, to the Delegated Powers Committee and to the Education Committee, she has recognised the widespread concern about this accelerated process and that is welcome. I know that the cabinet secretary has said that Parliament will undertake what she has described as retrospective scrutiny, with the opportunity for a revised order to be laid to take account of any issues arising out of this retrospective scrutiny. However, as the Delegated Powers Committee concluded in the report yesterday, should Parliament approve this order today, this will be the law. Further consideration by the committee will be undertaken in that context. That aside, we are prepared to accept that the Scottish Government has had little option but to ensure the passage of this order as quickly as possible. Given that Disclosure Scotland, as John Mason pointed out, has already ceased issuing the high-level disclosures so that we can ensure public confidence in the system, if today's decision was to be delayed, then almost 1,000 certificates a day would not be able to be processed or issued. Speed is of the essence. Obviously, that would cause major hold-ups for people such as police officers, childcare workers and teachers who are going through the process at the moment. That is why Scottish Labour will be supporting the order at decision time today. I think that our duty here has got to be to do all we can to keep our communities safe and the public protected. That must be first and foremost when it comes to changes that affect children, young people and the most vulnerable groups, but we also need to ensure that the system is proportionate and does not undermine the rights of people who have had less serious convictions in the past and are looking to play a positive role in our society and our economy. Up until now, many of the disclosures that people have made have been unnecessary. An example given in the Supreme Court ruling was that women refused their job at a care home eight years after receiving a caution for shoplifting. We have all had constituents come to us telling us about a job opportunity that has been denied because maybe we have a speed and conviction many years ago. Many or who have been involved in trouble as youngsters in decades on are still being made to pay the price for too long rules that have forced to blanket disclosure or are often irrelevant and sometimes unreliable information have blighted people's lives for too long. We all know that disclosure of even the most minor criminal convictions can have a huge impact on individual seeking employment. That especially impacts on men who are three times more likely to have a criminal conviction than women. Having to disclose previous criminal activity can have an on-going impact on people's ability to gain employment, to attend university or college, to volunteer even to open a bank account. All the evidence suggests that the key to ensuring that people don't re-offend is having those things, having a stable job, having access to education, positive family relationships and allowing people to move on and play a positive role, yet those are the opportunities that are being denied to some people by the way the system operates now. That said, I do think that there will be some public concern about the list of offences that are included in the order of the type of offences that will now be disclosed. I think that the list may be cast a wee bit too wide. For example, the list outlined in schedule B1, which now might not be disclosed, includes public indecency and peritury. I hope that in the 120-day period that Angela Constance has talked about, that there will be sufficient opportunity and time for retrospective scrutiny for any of those concerns to be fully taken on board. I am sure that the Scottish Government will fully engage with all the Parliament's committees, with all relevant stakeholders and with the public during this period. I would welcome assurances from the cabinet secretary that Disclosure Scotland and its staff will be sufficiently and fully resourced and trained to adapt to the changes that we are agreeing to today. Ultimately, those are changes that are about striking an important balance between public protection and people's right to have the privacy respected. I emphasise once more that we were a bit concerned about the way the order has been handled and about how that reflects on our Scottish Parliament. Scottish Labour will be supporting the Government's motion today. I am very pleased to participate in this debate on the amendment order to the rehabilitation of offenders act 1974, Exclusions and Exceptions, which was brought to our attention last week. I would like to thank the business managers, as Cara Hylton did, and also the cabinet secretary and our officials, including the Minister for Parliament. I do not mean that you are an official, but for your part in this. For keeping members informed of the circumstances surrounding the proposed changes to the system of higher-level disclosures, there are two issues that need to be addressed. The first being the proposed reforms themselves, and the second being the accelerated process that is required to achieve their implementation. Turning first to the reforms, let me be clear that robust scrutiny of individuals' backgrounds should be the prerequisite for anyone seeking employment in sensitive roles with vulnerable groups or positions of trust and responsibility. If the conviction is spent but is sufficiently serious and relevant to the remit of the role, our view is that it should always be disclosed. The gold standard must be to ensure the safety and security of those at risk and rigorous tests therefore need to be in place. We simply cannot condone a soft-touch approach on such an important issue. Equally, the current system that requires self-disclosures of all convictions regardless of how old and potentially minor they may be is undoubtedly anachronistic, and in some cases we accept could be unfairly prejudicial. As the cabinet secretary stated, in June 2014 the UK Supreme Court ruled to this effect, but it should be pointed out that the particular circumstances of the two cases that gave rise to this ruling could not have occurred in Scotland. Nevertheless, it is right that the system of disclosure is also under review north of the border. Based on the evidence, so far the proposed changes do seem to be proportionate and acceptable. However, looking at schedule B1, I quote offences that are to be disclosed subject to rules. Cara Hylton touched on that issue. We do have some concerns that individuals with previous convictions for offences such as fire-raising, fraud, housebreaking, theft and public indecency could potentially end up working in sensitive roles and with vulnerable groups. While I appreciate that the non-disclosure of these offences will be dependent on a number of variables, such as the disposal given and the passage of time, since conviction, I do very much hope that in practice it is exercised judiciously and sensibly. It is also important that the public fully understands the forthcoming changes to the higher-level disclosure system and the implications that those will have on future employment where applicable. Those reforms are fairly technical in nature and the effect of such changes will need to be communicated in a clear, transparent and accessible way. Turning briefly to the accelerated procedure that is necessitated by the affirmative order, I understand that disclosure Scotland has ceased issuing higher-level disclosures to ensure public confidence in the disclosure system. That is obviously a cause for concern given the sheer volume of disclosure certificates that will not be processed as the instruments are being scrutinised, we understand around 1,000 each day. We do, Presiding Officer, support the action taken today by the Government. We support the measures that have been outlined by the Cabinet Secretary in this debate, but we do ask the Government to continue to monitor the situation closely, to make sure that it has no adverse effects, and we would like to ensure that this Parliament or to ask that this Parliament is fully informed of any potential future changes and implementation. Can I now call Nigel Dawn to speak on behalf of the Delegated Person Law Reform Committee? I would be obliged, Mr Dawn, if you would continue until 5.25. Thank you, Presiding Officer. I should be happy to try to do so. I am grateful for the opportunity to be able to speak on behalf of the Delegated Person Law Reform Committee about this extremely important statutory instrument, which, of course, only was published on Monday afternoon and therefore came to my committee yesterday morning with relatively little opportunity to scrutinise it. It does, as others have commented, change the rules on the responsibilities that individuals have to self-disclose and adjust the rules on what information about an individual's previous criminal activity can actually be used against that individual in various proceedings. I would like to thank not only the Government for keeping us informed on the possibility that this might arrive, but also my clerks or my committee's clerks and our legal advisers who must have burned some candle wax in providing the advice to us. I would also like to thank members of the committee for their robust scrutiny of it in an hour and 40 minutes yesterday morning. Note also that the official report turned their work around very quickly so that not only was our report, but also the official report were published yesterday afternoon giving all members an opportunity to see what had happened. The exceptional circumstances and timing of this have already been noted. Clearly, we was not, as a committee, expect this to happen very frequently, but I'm sure it won't. Now, in the limited time available to my committee, I think it just simply has to be said that we have not been able to draw quite as many conclusions as we might have done on all the other instruments that come before us, but we have been able to draw the conclusion that there is no reason why we should report this. If I may quote from the committee's report, in the time available to consider the draft order, the committee has not formed the view that the instrument raises a devolution issue. Nor, however, can the committee be confident that no such issues arise. The committee considers that some of the policy choices which have been made in the draft order require further investigation with regard to the test laid down by the UK Supreme Court in T and another case. Further, in the evidence gathered to date, members recognise that, within the range of potentially convention-compatible solutions, distinct policy choices have been made, and the relevant lead committees will wish to explore those. I thank the member for giving way. I appreciate what he says. I very much agree with the conclusion that the committee came to, of which I am a vice-conviner. The one point that the court had raised was the question that no assessment was undertaken of the relevance of the information that was disclosed to the purpose for which the disclosure was required. Would he accept that there is a bit of uncertainty around that? Although there is a right of appeal in a sense, Disclosure Scotland is not looking at the purpose. I thank the member rightfully and helpfully for the one point that was a slight concern to us. Before I put that in context, can I be clear that what the cabinet secretary laid out before us was a set of rules? We recognise that it needs to be a set of rules. It cannot be a circumstance where anybody in Disclosure Scotland is required to provide their own discretionary view on the applicability of the rules, because otherwise that is no longer Disclosure Scotland, that is some kind of tribunal which Disclosure Scotland is not. The rules are laid down quite clearly, pick out the different categories of offence, and they quite clearly pick out the time that has elapsed since the offence took place, and the age of the offender at the time of conviction. However, as John Mason has pointed out, it is not clear that they do not specifically cover the relevance or otherwise of a particular offence conviction to the job for which the individual is applying. That is something that I think all parties will have to consider, but I do not think—and this needs to be clear, Presiding Officer—that is not a reason for reporting this. We are entirely comfortable as a committee that this does satisfy the primary test. We cannot see why it should be reported. We believe that, fundamentally, it is capable of satisfying article 8 of the European Convention on Human Rights, and we have reported accordingly. I now call on Angela Constance to wind up the debate. Cabinet Secretary, please, to 5.29. Thank you, Presiding Officer. I start by welcoming the very constructive contributions from members, from Cara Hilton, from Mary Scanlon, Nigel Don and, of course, the two interventions that we have had this evening from John Mason. I once again want to thank Parliament for agreeing to this accelerated process. I pay tribute to members for their understanding of the position of where we start from, and it is that the UK Supreme Court's decision and the subsequent case law that has caused us to consider the operation of higher-level disclosures. I appreciate the acceptance that people have supported the Government's view in that our conclusions are that change is necessary and people appear to be accepting of that. We are of the view that changes should be made to ensure that the disclosure of spent convictions is more proportionate. The reforms seek the right balance between firstly and foremost public protection and, of course, the rights of individuals. Those reforms will continue to ensure that vulnerable groups are protected with a person's background assessed for any relevant conviction. It is important to stress, Presiding Officer, that, with the most serious of spent convictions that they will always be disclosed, and, of course, due to the rehabilitation of offenders act, there are some convictions that will never, ever be spent, and particularly for those convictions that warrant a custodial sentence of 30 months or more. Those offences will never be spent. Those reforms allow those with minor criminal convictions to put their past offending behaviour behind them, enabling them to become more productive members of society and not to be penalised for very old and minor convictions. I acknowledge to the chamber that we have taken the time to fully understand the direct relevance of each element of the UK Supreme Court judgment and the emerging case law, and how that applies in a Scottish context. Mary Scanlon is right that the original case that went to the UK Supreme Court was not a case in England that could not happen in Scotland. We had to look at matters very carefully and closely in relation to standard and enhanced disclosures and also the PVG scheme, and then to develop the complex policy and operational solutions needed to implement an amended disclosure regime for higher-level disclosures. I am happy to give the minister a right to me about the exclusion relating to proceedings before the mental health tribunal or the mental wealth commission for Scotland. I find that very difficult to understand why that was still disapplied. I give that undertaking to Mr Simpson. We began to focus yesterday at the committee on some of the other aspects of that in terms of firearms legislation, gambling legislation and the point that Mr Simpson raised that we need to address any concerns that he has in relation to mental health law and the mental health tribunal system for Scotland, and I will give a personal undertaking to doing that in the fullest possible terms. It is important to acknowledge that irrespective of the length of time prior to coming to Parliament that we would have always sought an expedited process. Essentially, the unusual parliamentary process was used to ensure as little disruption to the issue of higher-level disclosures as possible, and we have heard from members that, for every day that disclosure Scotland does not operate, that means that a thousand higher-level disclosure applications cannot be processed and we have sought to minimise that disruption to three days. We all understand that disruption is undesirable and that it has an impact on an applicant's ability to secure jobs and also an impact on an employer's ability to fill vacant posts. Nonetheless, I can reassure chamber that disclosure Scotland is fully resourced and ready to deal with that three-day backlog as quickly as possible and that it is confident that it will still meet its targets in relation to completing 90 per cent of applications within 14 days. My final point is that, in terms of continued scrutiny, this Government will welcome continued scrutiny on all of these matters. There are 120 days, 60 days for written views to be submitted and other 60 days in terms of committee reports. There will have to be a further parliamentary statement, but more fundamentally we do want to ensure that we have the right offences on the right list and we will work very closely with the Parliament to ensure that the detail of the affirmative order is absolutely right. Tomorrow, the remedial order will be placed and it will come into force on the same day as the affirmative order. That allows for the correction of any potential incompatibilities as well as any actual incompatibilities with ECHR. We believe that the changes that we are proposing to Parliament tonight will underpin a disclosure regime in Scotland that is compatible and compliant with ECHR and will continue to protect the public. I am grateful to Parliament and I seek Parliament's support for this order, Presiding Officer. Thank you Cabinet Secretary. That concludes the very short debate on the Rehabilitation of Offenders Act 1974, Exclusions and Exceptions Scotland amendment to order 2015. The next item of business is consideration of business motion number 14191. In the name of Joe Fitzpatrick, on behalf of the parliamentary bureau, setting it a revision to the business programme on Thursday 10 September, any member who wishes to speak against motion should press a request to speak but now. I call on Joe Fitzpatrick to move motion number 14191. The next item of business is consideration of business motion number 14175. In the name of Joe Fitzpatrick, on behalf of the parliamentary bureau, setting out a business programme, any member who wishes to speak against the motion should press a request to speak but now. I call on Joe Fitzpatrick to move motion number 14175. The next item of business is consideration of a parliamentary bureau motion. I would ask Joe Fitzpatrick to move motion number 14173 on approval of an SSI. The question on this motion will be put at decision time. Before we come to decision time, I would like to say a few words to Mark on a special occasion. As we commemorate the milestone of our longest-serving monarch, I had the pleasure and privilege to be with Her Majesty the Queen today. I was therefore in the very fortunate position to be able to pass on in person the best wishes and warmest congratulations on behalf of the Scottish Parliament. During the event today, the wonderful opening of the border railway, I saw yet again the commitment of a woman who has worked through decades of public service. That incredible commitment has not diminished with the passing of time. I am sure that all MSPs will wish to join me today in marking not just a landmark moment in terms of her history but in the remarkable and dedicated journey of one woman's life of public service. There are five questions to be put as a result of today's business. The first question is amendment number 14167.2, in the name of Margaret Burgess, which seeks to amend motion number 14167, in the name of Ken Macintosh in the housing and wellbeing in Scotland, be agreed to. Are we all agreed? The Parliament is not agreed. We move to vote. Members should cast their votes now. The result of the vote on amendment number 14167.2, in the name of Margaret Burgess, is as follows. Yes, 63. No, 54. There were no abstentions. The amendment is therefore agreed to. The next question is amendment number 14167.1, in the name of Alex Johnson, which seeks to amend motion number 14167, in the name of Ken Macintosh, and on housing and wellbeing in Scotland, be agreed to. Are we all agreed? The Parliament is not agreed. We move to vote. Members should cast their votes now. The result of the vote on amendment number 14167.1, in the name of Alex Johnson, is as follows. Yes, 14. No, 103. There were no abstentions. The amendment is therefore not agreed to. The next question is at motion number 14167, in the name of Ken Macintosh, is as amended. On housing and wellbeing in Scotland, be agreed to. Are we all agreed? The Parliament is not agreed. We move to vote. Members should cast their votes now. The result of the vote on motion number 14167, in the name of Ken Macintosh, is as amended. Is as follows. Yes, 95. No, 18. There were four abstentions. The motion as amended is therefore agreed to. The next question is at motion number 14189, in the name of Angela Constance, on the Rehabilitation of Offenders Act 1974, Exclusions and Exceptions, Scotland Amendment Order 2015, draft. Be agreed to. Are we all agreed? The motion is therefore agreed to. The next question is at motion number 14173, in the name of Joe Fitzpatrick on approval of an SSI. Be agreed to. Are we all agreed? The motion is therefore agreed to. That concludes decision time. We now move to members' business. Members should leave in the chamber, should do so quickly and quietly.


Hey, everybody Lance Quakey here today. We're going to discuss another variation of the eccentric pull-up, but this is instead of instead of Accentuating the eccentric we are eliminating the other phase and we are only training the eccentric so what we do here is We just jump up to the bar with our feet or climb up to the bar with our feet and then lower yourself This is another way to force reps in so if I'm doing a whole set And maybe I've done all the normal reps that I can and I cannot do any more normal reps Then what I like to do if I need to force some extra fatigue into my muscles is I'll jump on up there I'll step on up there or wiggle up there or whatever it is and then I'll just try to lower myself under control If you take a really long time it introduces a lot of fatigue And you don't have to do it that many times, but yeah, I would definitely get your butt back up there and do it at least once more So that's a nice way to force reps out and to force Fatigue into your muscles so that you're stimulating the growth response, right? Why else would I do this? Well, if you can't do a pull-up Even not not because of fatigue, but maybe you just have never done one This is a great great great variation for you to start with because it gets you on the bar It gets you holding that and it gets you kind of feeling what is supposed to be happening It's you feeling the right movements It gets you learning how to move and lengthen your arms up and feel that stretch While the muscles are still contracting all of that is really really important As part of the newbie gains of strength, right? When you first start working out you get really really strong really really fast It's great. It never happens that way again. That's like the lowest hanging fruit for making yourself less destructible And I think everyone should at least do You know 12 weeks of strength training and then the rest of their life They can maintain and they'll be much better off, right? Your strength levels just go through the roof So I can I can use this to kind of teach those intro parts of the pull-up So I just jump on up to the bar and I lower myself under control as you get Stronger it's going to take longer for you to lower down because you're gonna have more control And you're gonna be able to resist gravity a lot better so the intent here is just to jump up and Lower yourself in as long a time period as you can and then do you know X number of reps you could set those reps Purposefully or you could just say do it until you're just falling Which happens sometimes right and that's that's good. That means you're introducing that fatigue That means you're pushing yourself and that means you're gonna grow from that. You'll notice games, okay? So eccentric pull-up eccentric only pull-up is a great variation for you to try out if you're trying to learn how to do your first pull-up or if you're trying to Force some extra reps in


What? Hey, nice. Ignore me! Interesting. Yeah, go ahead. Actually, do I want to do this? No, I'll just... Yeah, I'm audible, right? Hey. Alright. Alright, our speaker for right now, RPM Dependency Abuse, we have Will Woods, a Red Hatter of 15 years? Almost, this is my 15th year already. Nice. Alright, so... Yeah, something like that. Give it up for him. Hey, all. Hold on one moment. Eatin' crackers and sand all day and parched. Hi, so this is me talking about RPM Dependency Abuse, and thank you all for coming, and I want to say in advance that, due to some circumstances outside of my control, I didn't get as far in my research on this. I was hoping to present working demos of some of the stuff I want to talk about, but I just haven't been able to get around to that. Hopefully, my brave employer will see fit to let me have some time to work on this, or setting the problem straight, or at least firmly crooked, but we'll see. So RPM Dependencies, they're fun. Well, yeah, by the way, nothing I'm saying here is actually like Red Hat official. It's kind of just me ranting as a person who has seen way too much inside of RPM and is worried about it. And yeah, I worked these like two hours ago. So RPM Dependencies are very, very complicated. We keep pushing more and more of the complexity of this system where we build software and put it out to the world into RPM Dependencies. So the operation of the system, when you look at it as a whole, a lot of it is encoded in a sort of big ball of like a graph of Dependencies where all these little things point to each other and they're all connected in ways that nobody understands fully anymore. And the whole thing runs its route, which is super cool. So I don't know that there is no specification for RPM. I mean, there is mention of it in the Linux, what is it, the LDP, yeah, the LSB, but that's the effecto specification. If you implemented the stuff that's in there, it won't work because we changed it. We don't like publish a spec for any of this stuff. We sort of publish documentation about how it's supposed to work, but it's basically the code works, use that. This is why there's no third party RPM installer tools because nobody else can get it right. The only canonical implementation or description is the RPM code itself, which seems kind of bad because we keep adding more and more features and we don't really know how they all interact. So just to go through the basics of RPM a little bit, Dependencies are a pretty good idea, right? You've got a software package of some sort. It has some capabilities. So yeah, packages should be able to require each other, right? Like this thing uses this library. So if I install this thing, I also need to install this library. Okay, that's sensible. And then you get versions involved. And it's like, okay, I can now say, all right, so every package now implicitly provides itself at whatever version it is. And we compare the version. Now we have tools. You can compare the versions. You can say I require something greater than this version. So now we're doing a matching operation. We're saying, all right, look at all the things that exist instead of just saying find one from this big set of things that exist. You're saying find all the things that match this and only this part. And then you have to do some other stuff. So we're getting into like, we're sort of building a weird little set theory thing here with it, which can start to get complicated later. So yeah, basic RPM dependencies. You have requires, you have obsolete, you have conflicts. You want to say, all right, this package replaces this one. They're all sensible ideas. But the way they interact after a while, it's interesting. There's also things like build requires, which is to say, so when you say, okay, when I say this package requires this thing, what do I mean by that? Implicitly, whenever we talk about requirements we're saying in the RPM world, we're saying at, well, depending on how you think about it, it's basically when I want to run the software that is in this package, it won't run correctly unless this other thing is there, which is sort of a vague notion. We have one other version of that, which is to say, oh, right, that doesn't cover every case because sometimes we need a package to be installed when I build a thing. So we added one more. But there's like a lot more subtle interactions between packages that we just don't really have tools or really have tags to capture. So we've sort of started doing other things to just sort of fake it rather than actually getting good data. So we're like, so now we have weak dependencies where you can be like, okay, well, this package kind of wants this other package to be there, but it's cool if it's not. Or this package wants this thing to be there and if it's there, that's great. And if you don't feel like installing it, I don't know, that's fine too. The precise definitions of these things are like we do have precise definitions for them, but that's the only tool that we really had for being first saying either this thing requires this or it doesn't. And now it's like, now we can say kinda, which doesn't really help with everything. And then we're like, well, what if we could do it backwards? Maybe that'll help. So now you have supplements and enhances where you can say, I kind of like this other package to be, or I help out this other package, so maybe you want to install that one too. Or you say, oh, even weaker version of that. So we've got the concept of the strength of a connection between two packages, but nothing else about the package. So now we had one connection between packages. And then we're like, okay, now we have a bold version and an italic version, but it's still a connection between the two packages. And now we're like, okay, now we can do backwards connections where I say, that guy over there, he likes me. Okay, cool, I guess. And then we got real silly with it where you can start doing things like, okay, I want this package and that package to be installed, or I want that package if it's greater than this version, or this other thing is fine too. Or you can say, I can do with and without, I want these two packages, they have to be from the same package, or something like that. So you can start putting all of these things together. So at this point, you've got all of these things that I think RPM dependencies are turning complete. And this is the theory, right? So imagine you have a package that's called dpuax, like a register on a CPU, right? You've got version zero to 255, so you've got a high byte and a low byte. So then you've got another package that's instruction one, set AX whatever, and it just says, okay, I require that package. And then you've got another, a next instruction, which requires, you know, like, I want to increment AX. Okay, so that means if we're at one, go to, or yeah, if it's zero, go to one. I mean, it would be a really gross thing. And each instruction there absolutes the previous one, thus booting it out of the dependency transaction as it's being solved. I'm pretty sure if you put enough of these things together, you could do arbitrary calculations during depth solving inside of RPM. I don't think we meant to do that. I don't think that was on purpose. I think this happened by accident. I don't think that's great also, because it also runs as root, because, like, what if I just went around doing things like, like any package can make these sorts of declarations and we have the reverse ones now. So like, oh, so yeah, enhances and suggests we have reverse ones, but you could probably also do things like this. Say that some package that's on everybody's system, say that you obsolete it, but you also require it. And I think what'll happen is that it'll see that and it'll be like, okay, well, I'll put you in here because your system has this installed and this new package absolutes it. Okay, so I need to pull this in.  And then I can do whatever I want.  And like, okay, but you're going to notice if like there's this weird package that gets installed in your system and then, you know, the post script says rm-rf slash or whatever. But like, what if I start hiding what's in the scripts? What if I'm doing, what if I hid things in like the change log? And so I can, of some other package, and I can just like pull parts of the other package change log out and execute them so that like I, the scripts that I'm running on your system is actually being pulled from places that aren't in my package. It would be really hard to trace back where the code that got executed even came from. So like, at a certain point, I'm pretty sure that I could craft a package that would inject itself onto every Fedora system in the world, figure out, you know, figure out what users are on it. Like, I could figure out if it's Adam in the room. Well, I was going to pick on Adam Williams, but oh, there you are, hey, Adam. So yeah, what I was going to do for this talk, what I was hoping to do was I was going to find, I was going to do trial of this out, and I was going to get a package injected into every system with some innocuous name that you wouldn't even notice was getting installed during an update. And I was going to have it wait until today, and oh, it was also going to check to see if users were on the system and look for your username. And it was going to wait until this time of day, and then I was going to pop up a whole bunch of hot dogs on your screen just during the talk, just to sort of prove the point. It's left as an exercise to the reader whether or not I can actually make hot dogs pop up on your screen. But the pieces are all there as far as we can tell. Yeah. I'm going to do questionable things with spec files in like 10 minutes later on when you know what the package is like.   Yeah, there are. It's like a code rate from the win. Yeah, there are people watching, and you do want to watch out for that. But I think that because scriptlets can be super duper complicated.  And if you're, you know, clever or determined, you can make it so that your script looks innocuous. And you could probably sneak through a code review. You can also have packages like remove themselves or have a pair of package, one that shows up later and removes your other package. So there's no trace that the thing that got installed or that did the damage to your system isn't there anymore. Or, you know, you'll have some record that it was there. But we don't keep a historical record of every package that has ever been installed in your system. It's in the yum log, I think. But we're not sure about that. Here's an RPM log. Wait, there is an RPM log? It does. Okay, good. There is a lot of that in RPM. Yeah, there's a larger thing here. I wanted to talk about this part because it kind of scares me. There's a lot in RPM that we don't fully understand or really use anymore. Did you know RPM has per file dependencies? Yeah, we don't use them, but they're there for every single file in every single package. There's 15 million files in Fedora 27. And yeah, we have the output of the file command and the output of the file command and a relationship between which dependency attaches to which file. And we don't use any of it. We also have great things in RPM headers like the file device number. Like when you have a file on disk, it has a device number. When you have a file in a tar ball, it doesn't because that doesn't make any sense unless you're actually backing up from a tar ball. So they're still in the RPM headers. They're always zero. It's a 32-bit number. So there's 15 million 32-bit zeros in every package. That's great. There's like 90% or not 90%, but some huge percentage of the metadata that's in package headers is totally unused or nonsensical at this point. Like the package that comes? Oh, yeah. Package icons and things like that are really great. Well, I mean, there's headers that we don't use, like icons, but there's headers that are in RPM that we just ignore, like file device, file inode number. There's an inode number stored for every file in every RPM. Yeah, apparently we wanted to have complete CPIO headers for every file, so we did that. There's another bunch of stuff like RPM only knows about eight types of data. It knows null, eight-bit integer, 16-bit, 32-bit. It used to know about 64, but we stopped using it. It knows about strings. It knows about arrays of strings, and that's it. Oh, it boolean blobs. That's the other thing that it knows about. One thing you'll notice is it doesn't know about arrays of boolean, sorry, binary blobs. It doesn't know about arrays of binary blobs, and that's why we store all of the hashes as strings, as hex strings, which means that they're all twice as big as they need to be, just because we don't have a type for that. It's just easier to put it as a string. Okay, these are all little nit-picky things, but when you add them all up, there's a huge amount of slack and unused stuff in RPM. Some of it's just useless, some of it just slows things down, and some of it is, frankly, dangerous. I want to start thinking about, well, for requires, I wanted to start thinking about as a community and industry, thinking about fixing some of this stuff, frankly, and what comes after RPM, because I'm pretty convinced that a lot of this is really super unsafe, and it could be better. To start with dependencies, we'd be really a lot better off if we were talking about having a purpose for our requires. The larger point I'm trying to make is that I think we need to actually sit down and design something, which is weird and scary where we've just had this thing we've been using for 20-something years, and kind of tacking on more pieces until it accidentally became turn-complete and sentient, and maybe can destroy all of your computers, but it hasn't yet, so we're cool with it. We probably should design something with the stuff we want it to do and doesn't blow up. So the point for this particular part is talking about dependencies, and I think the one thing that we're missing and one reason that we keep pushing more complexity into, like the way we do language packs now is through the soft requirements. They are either enhances or whatever, but the correct operation and construction of the system keeps getting pushed into this thing that we don't understand, and it's actually turn-complete and it keeps blowing up. So here we go. I'm thinking we should have a purpose for a require. A require should have three bits. I mean, probably strength in here, too, but I'm not convinced that a require strength is actually what we want. I think what we actually want when we're trying to say, well, this maybe wants this other thing is we're trying to expect some other type of relationship between the two packages, and we need to be able to add those. On the previous slide, I talked about test requires. We don't have that. We've been fighting about it for 15 years and we've been trying to figure out whether we're going to be able to add these other packages. So the fact that we can't extend RPM to add new things easily is holding us back in ways that are becoming dangerous. So I don't think we... I don't know about strength. I'm willing to have the conversation about whether having the strength for a require is enhanced, this is a good idea, but I think that the purpose is one that we're missing. Because if you have a man page and you require the man page reader, does your program actually need man to work, or is it the man page needs that to work? So there's different relationships happening there other than just requires. So we want it... These should be at the file level, I think, probably, or at least a sub-package level, but we also need to be able to talk about different purposes and add new purposes. And then component expression is the thing I've put there. When we talk about things, when we have, on the right side, when you say require, you can say a thing, and it used to be just a version number, and then it got real...  So what we're doing there is sort of... Well, you're doing a bunch of stuff there, and it kind of hurts my brain, but what we want in the simpler model where it's like, what I'm trying to say is, for this reason, I want one of some set of things.  And right now, the only thing we have is a name, and that's where the names of packages keep getting weirder, and longer, because the only thing we can do to look up a package is its name. So that's the only thing that we can change to make two packages different. We're timing more and more things into the name, which is why we have lib sub-packages and all of the other things. You're talking about the purpose of the package. You're talking about what those parts of the package are for, but that doesn't need to be the name of the package. So we need some sort of... We need to start designing different required types and purposes that we could just have, okay, this requires a runtime, or this requires for testing. And we should put together, we should think more about packages and how you match pieces of packages against each other. When you think about sub-packages, they're kind of tags, really. What you're saying is these files, I'm tagging as libraries, or man pages, or whatever they are. We could have tags. We could do that. That would be pretty cool, because then you get a package that had multiple tags applied, because right now a file can only be in one package. So you can't have multiple tags on a package. We could fix that. And we could have some sort of... So you have some way of describing the data that you're providing about your stuff, and then you need some other way of matching against that data to get the pieces that you need to build, whatever it is that you're building. These are not like cutting-edge computer science craziness ideas. This is really simple stuff. It's just that nobody's bothered to sit down to design a thing for doing it in RPM, or whatever the next thing's going to be. So I think that's what we should do. Let's write some damn specs and figure out what it is we're actually trying to do here and write code that does it and does it well. So yeah, that's my pitch. So are there any questions about anything at all? Or do you just want to hear me yell about RPM metadata more?  So on projects like X2Go and Tygo VNC, we provide an X server. We have the common problem of like, you know, packages explicitly client Xorg when they don't need Xorg specifically need an X server in general. How do you think that should be solved? Yeah, so yeah, in RPM Land we have virtual provides, which are like a hack that we added where you can say a package just provides something and it can be some abstract concept like love. It's whatever. It's a free forum string, but you can say yeah, my package provides love. And then anything that needs, and then if there's like 15 packages that provide love then your package can say I need love because everybody and you'll get one of those packages. And the question is which one do you get? And like, we don't have a way of expressing that sort of preference. And what used to happen in at least early versions of YUM is, you know, there's like a built-in heuristic which does anybody in the room know the exact way this happens? I bet Neil does. It's stat order. What? Yes.  So it used to be the shortest form of order. It used to then change to minimum of penalty three leg. And now it's just LS stat order. Yeah, and there's no spec for this, y'all. And it changes all the time. The other guys just decided to change. Yeah, YUM had this really complex heuristic to have to do it.   And let's not tell anybody or increment any sort of version number or have any sort of specification. Experimentation to figure this out. Yeah, yeah. The idea of virtual horizon isn't a bad one on its own for a package to be able to say, I provide this thing. But we need a richer way of matching against those things to be able to express the sorts of preferences and the stuff we have just isn't coding it. But yeah, virtual provides and virtual, or yeah, virtual provides or capabilities, things like that would be a good idea. We should probably also have types for that stuff because it's just free form strings in RPM land. And it would be nice if you could say, I need this amount of love. I think distro default should be good. This is distro default services to enable or disable. You could have distro default X server is X org. And default love provider is well, I'll leave that to you. Right. Yeah, I mean, at a certain point, you need some way for the system to arbitrate like, okay, of the packages that match the, you know, this of the set of things that could match which one should I pick. And the way that like that policy will change depending on what you're talking about. And without better metadata, we can't make those sorts of things. And that's why you randomly got like X in as your mail transfer agent for a while because it was a shorter name than a post fix. So like that's not like nobody knew what it was and it's not user configurable and it's just strange. So yeah, user there should be default for that sort of thing too. Anyway, I'm sorry. The distro defaults is a big deal for services who make sense here. So thank you. Yeah. So this is more of like a question of absurdity here. What happens have you ever tried putting emoji into into these strings extended Unicode basically what happens into package names. Yes. I think we specifically disallowed that at some point. But I'm not certain. Yeah. Yeah. The fun part is that like version numbers don't have to be numeric. Anything. As long as they sort they can do whatever. But yeah, it's all just strings. Oh, yeah. Did you find out about the tilde, the special behavior with tilde? Yeah, that's fun. So it no longer does this than the original version of Shepard does. For a long time, Shepard used to be like very Yeah. Yeah. And because there's no specification for any of this, like everybody has to write their own and everybody gets a few quirks wrong and there's nothing that says Yeah. Right. And so now we have the Yes. So now we have the chicken and egg problem where there's a function now. Yeah. Yeah. Yeah. This is my other this is sort of the other part of my pictures that like we're in this unfortunate circumstance where everything needs RPM to work correctly, but we want to fix RPM, but we can't fix RPM because everything is using it and without it it won't work correctly. So we can't change anything. So like we're going to have to build something else alongside it. We can't I don't think we can start by just fixing RPM. I mean, some of these things we can add to RPM, but I think that it probably behooves us to try and a second thing and then mash the two together or you know get from here to there, but I don't know that we can apply these sorts of fixes directly to RPM. I do know that writing some specs and like actually having a model for how it should work is a really good first step. That's my opinion anyway. Feel free to tell me I'm wrong. Sorry. In the description we get the most dangerous thing is where you get the most fault. But then how would you have anything that would be nearly powerful enough to give you a way to do the stuff you need post-installed and not have the ability to execute scripts anyway? What do you need to do after install? Because this is a different talk that I gave, but you're so you're asking what would happen without post or like how do you... That made me an option is just dropping post entirely. What I'm saying is in the things you expose I'm not too concerned about the Turing complete thing because of performance concern. I think the complete machine might be slow. It's more of a parlor trick than it is an actual useful... But about executing stuff and doing that silently that might be dangerous. But then are you going to conclude that we get rid of any way to execute scripts in RPM? Is that where you go? Yes. Short answer? Yeah, no. Scriptlets have to die. Longer answer is that if you go through and look at all of it all the things that happen in scriptlets they're... Well, some of them are optional but we don't know which ones are optional. Some of them are just like this is a performance enhancement enhancement but we don't know the difference whether a post script is this won't run unless I run this script or if it's like this builds a cache you can skip it if you want. So, there's two things I think that need to happen. One is we should totally get rid of scriptlets and instead just have a carefully selected set of things that we know to be deterministic. We know what we're going to do. It's not a problem if you're like I want to create a file. Sure. I want to write some data to a file. I know what that's going to do and I can decide when to do that and we can make allowances for things where for anything that actually needs some code to be run after the package is installed there might be an argument for that but I went through and read every scriptlet in RHEL 7. Like every scriptlet in every package in RHEL there's only like six things that are happening and it's mostly like adding users, starting services building caches and sometimes it's like making keys and things like that so we don't need to let users or packages run arbitrary scripts. That's dangerous, frankly kind of silly. We can hand them the tools that they need and let them use those tools and especially if we design them to be safe especially if we design them so that they we know when they're going to operate so that we can make smart decisions about when to do the things and did that answer the question? It does and what about having a rule where you can't execute you know you add some stuff that allows you to execute a comment that all the comments have a common prefix like forgets. Sorry? All the comments have a common prefix that is added automatically like forgets so you'd have rpm-something and you can only execute rpm-something. Oh yeah, yeah we could totally work this in. Actually my if we're working on in the current stuff, we're trying to add basically macros for all of the common tasks and eventually I would like to see it so that out in the packaging world as it exists now it will have a rule that says after a certain point your script can only use these macros and anything else will be rejected. Anything else? Let's thank our speaker. Thank you all very very much. So what's going to happen is at six o'clock we all have to be out of here and in the lobby and then once the party starts at seven you guys can come back in. So we have some games that's going on in the lobby so you can tide you guys over. Yeah, downstairs. Yeah, I think we're good for now but like at six o'clock we're just told that everyone has to be in the lobby.


Hi everyone, Sean with jaspyscasebrakes.com here doing a 2020 Panini Gold Standard football six box half case break pick your team number 11 coming from a fresh case. Here is the list, you can see there's lots of random number blocks in here for quite a few different teams. That's all split up between two random number blocks so you can see this one here for the Chargers, Eagles, Steelers, 49ers, the Seahawks, the Buccaneers, the Cardinals, the Bills, the Vikings and the Jets and the second one for the Bengals, the Patriots, Packers, Colts, Raiders, Panthers, Bears, Rams, Giants, Titans, Jaguars and New Orleans Saints. Now this is coming from a fresh case so we're going to have to open this up and figure out which six boxes we're going to be doing. Pick your team number 12 will be coming from the second half of this case guys so if your if your team didn't hit in this first half maybe you think you have a better luck in the second half go ahead and pick it up if you think these cases are repetitive and your team hit a lot in the first half pick up your team in the second half also so I'm going to try to pull them out left side right side so you'll see six boxes here and then over on here on the knick cam you can see the other six so we're going to throw a dice to figure out which stack of six we're going to do left or right preferred dice right here so one two three will be for the left side four five six will be here for the right side good luck everyone it's a six so right side pick your team number 12 these six will be for that you can see all of these are going to be written on so those will be for pick your team number 12 and in the meantime pick your team number 11 good luck everyone so this gold standard has been really nice this year Ryan I had to teach myself how to print so I write all my letters and numbers backwards all my letters and numbers it's pretty special it works it's just if you saw the product afterwards you would never know but in the process it's very interesting okay find out what's the front what's the back that's the base card that's a base card that's autograph so that's the back do you want to watch the replay of the the Lakers loss probably not good luck everyone starting off with Drew Locke 17 out of 20 for the Denver Broncos Kevin Smith and Dick Buckkiss three out of 99 for the Chicago Bears which is part of the random number block and that's part of the Bengals and Bears part of the random number block spot three that's going to Cody Shepulak first relic for the Raiders Josh Jacobs 181 of 199 Las Vegas Raiders is also random number block same Las Vegas Raiders same random number block there that's for spot one and Dave Domen another relic gold rush Christian McCaffrey for the Panthers numbered 65 of 199 Carolina Panthers also random number block same random number block spot five on that is quad Cory we're gonna have a lot of these probably going to the random number blocks because there's a lot of teams in random number blocks and first auto Allen Fanica for the Pittsburgh Steelers 16 out of 75 Pittsburgh Steelers also written in number block and it's the the Chargers random number block spot six is going to Josh Shriver congrats Josh and rookie Otto Zach Moss numbered 70 out of 199 for the Buffalo Villes random number block that is going to spot zero Benjamin Johnson congrats Benjamin and last card from box one dual relic Otto Clyde Edwards Hilaire rookie 87 out of 99 for the Kansas City Chiefs and going to David Allison box two Eli Manning two out of 10 going to the New York Giants random number block which is part of the Bengals random number block and spot two Ryan Redmond and then out of five Dwayne Haskins for the Washington Redskins Eric Jock straight up for him I think this year will be a big year for Dwayne Haskins he looks like he lost a lot of weight trimmed down I'm sure he's still got cannon for an arm anybody seen pictures of Daniel Jones dude looks like he's been lifting a lot Michael Strahan three out of 49 Hall of Gold two color relic some of the jersey number or something New York Giants random number block and that was number two or number three so that's going to Cody Sheplick congrats Cody and white gold relic Cortland Sutton for the Denver Broncos numbered 63 out of 199 Denver Broncos Kevin Smith another nice patch here 23 out of 49 for the New York Giants Sam Darnold New York Giants is also a random number block and that is part of the Chargers random number block spot three going to Pat Lynch congrats Pat four colors on that patch there Otto Mark Brinnell for the Jacksonville Jaguars numbered 41 out of 75 Jacksonville Jaguars is random number block and that is part of the Bengals random number block so spot one Dave Domen really nice patch here nice box Jalen Rhaegor three color dual patch Otto for the Philadelphia Eagles Philadelphia Eagles is part of the Chargers random number block so that's going to spot two Sean Maddock we got Sean that was the first two boxes starting on the left Miles Sanders one of 75 for the Philadelphia Eagles random number block that's part of the Chargers random number block so that's going to spot one Mark Haraki and Terry Bradshaw spot three Pittsburgh Steelers part of the random number block same random number block that's going to Pat Lynch now Cam Akers 22 out of 25 Rookie that's part of the Bengals random number block spot two that's going to Ryan Redmond and Kirk Cousins 99 out of 99 for the Minnesota Vikings that is part of the Chargers random number block spot nine Dave Domen random number switch everything up look at this the Lakers are in a full co-president this is one of them just made regretting Andrew John Ronaldo because of the pressure of why is that Brandon first up carry on Johnson for the Lions numbered 70 out of 99 Detroit Lions Kevin Smith dual relic for the Indianapolis Colts 82 out of 249 Jonathan Taylor and Michael Pittman Jr Indianapolis Colts the random number block that's going to the Bengals random number block spot two Ryan Redmond I mean thank you Brandon I do triple relic no auto 194 of 249 we have the Bengals the Chargers and the Dolphins involved in this so this is going to get a little bit messy the Chargers are obviously part of one random number block the Bengals are part of another and the Dolphins straight up are for Takume Abe so this is going to be a randomizer between the three teams at the end if one of the teams that's on the random number block ends up getting it it'll go to the spot four for each one of those random number blocks so Takume Abe with the Dolphins for the Chargers spot four that random number block that's Rafael Ponce and for the Bengals spot four that is Pat Lynch so we'll have to do random randomizer at the end of the break for that and four color patch and auto Gabriel Davis for the Buffalo Bill 32 out of 49 Buffalo is part of the Chargers random number block spot two Sean Mattis congrats very nice patch there oh and and another nice patch here 45 out of 49 Jerry Judy Denver Broncos Kevin Smith congratulations took the patches on that thing dual relic so far juju Smith Schuster and Deontay Johnson 198 out of 99 Pitford Steelers random number block part of the Chargers 98 that's going to be the eight spot Edwin Hawkins congrats Edwin another dual relic numbered four out of 49 DK Metcalf and Russell Wilson two colors on the DK for the Seattle Seahawks also part of the Chargers random block spot for Rafael Ponce well there you go you got another dual relic here Van Jefferson and Cam Acres for the Rams number 21 out of 49 Rams is also part of the random number block and that's for the Bengals random number block so going to spot one Dave Domen congrats Dave well thanks a lot Brandon I appreciate that man and how about look at the patch on this one nine out of 10 tie lock good as gold four color patch and auto new England Patriots also part of random number block and it's part of the Bengals random number block that's going to the two or nine spot Sean Maddock congratulations man awesome tie law out of there and last one in box four another Jalen Rago or dual relic auto 40 out of 99 Philadelphia Eagles random number block is part of the Chargers random number block so spot zero Benjamin Johnson congrats man last two boxes guys and like I said pick your team number 12 is from the same case so if you like what you see maybe your team was hot you think the rest of the box is going to keep going for it go ahead and get your team now if your team was cold you think the second half is going to turn it around go and get your team now before it gets put into a random number block or bought by somebody else PJ there's fillers I believe that that the fillers off to check the order though so first off base cards Pat Mahomes 40 out of 75 Kansas City Chiefs David Allison and Kishan Vaughn 56 out of 99 Tampa Bay Buccaneers is part of random number block with the Chargers so going to spot six and Josh Schreiber Julius Peppers for the Carolina Panthers random number block spot four Carolina Panthers are part of the Bengals random block and that's going to Pat Lynch and then also for the Carolina Panthers Derek Brown and that is number 66 of 99 no matter which way you look at it spot six on that one Josh Schreiber for the Dallas Cowboys Michael Gallup 78 of 199 Dallas Cowboys is going to Renee Goana white gold relic for the Cleveland Browns 140 of 199 going to Benjamin Johnson Baker Mayfield gold strike auto Darnell Savage Jr 12 out of 49 for the Green Bay Packers Green Bay is part of a random number block as well and that's part of the Bengals random number block going to spot two Ryan Rebin awesome looking to acetate Otto there next up Jabari Zaniga 24 out of 25 for the New York Jets random number block on that one and that is part of the Chargers random number block and that's going to spot four Rafael Ponce rookie patch Otto 72 out of 99 Cole Comet for the Chicago Bears Chicago Bears are also part of the Bengals random number block so that's going to spot two Ryan Redmond last box good luck everyone Damian Williams relic 124 of 199 for the Kansas City Chiefs going to David Allison for the Denver Broncos Jerry Judy 47 out of 49 relic Denver Broncos going to Kevin Smith we did get points 250 points so that'll be randomized at the end to the group and Otto Donovan People's Jones for the Cleveland Browns numbered 196 out of 199 Cleveland Browns going to Benjamin Johnson last up Antonio Gibson triple relic Otto 48 out of 99 for the Washington Redskins and Eric Jock congrats Eric we do have a couple randomizers coming up guys one for the triple relic and one separately for the points so first up we're going to do the relic between the three teams and then for the points let me set these up real quick we'll use the same dice roll on both lists guys so Cincinnati Chargers and Miami and then the other one will use the original spot list and put on the same is that a coach doesn't stubborn it's really not a coach that we'll use a team list and if it goes to a team that's in the random number block it will be randomized between the people in that random number block so dice roll six and a four ten times if it does go to random number block team as well guys we will be using this same dice roll for that randomizer so six and a four ten times now we're gonna get ten times on the triple relic one two three four five six seven eight nine tenths and final time good luck everyone it will be going to the bangles so that is part of the random number block for the bangles and that is spot four so that will be going to Pat Lynch see it on the bottom there 194 of 249 you gots Pat you get that triple relic there and then for the points we'll do ten times on this list here figure out what team that's going to go to one two three four five six seven eight nine and tenth and final time Los Angeles Chargers which is part of the random number block so let me get a group list for that here is the group list for the Chargers random number block from Mark down to Colin we're going to do ten times on this randomizer one two three four five six seven eight nine and tenth and final time good luck points are going to Benjamin Johnson Benjamin you are getting the 250 points thank you very much and guys that was 2020 pre gold standard football six box half case break pick your teams number 11 i'm shawn with jaspyscasebreaks.com pick your team number 12 second half of this case in the store now we'll see you next time