What's happening with human rights around our world on Think Tech Live, broadcasts from our downtown studio in Honolulu, Hawaii, and Juan, and Nuiakea. Today, we're at the UN Framework Convention on Climate Change, Conference of Parties 28 session, and we're looking at the most important basic human rights that illustrate the interconnectedness of the right to a clean, healthy, and sustainable environment. We're looking at the right to freedom of movement in residence, Article 13, The Human Right to Return to One's Homeland. We're exploring the existential climate change crisis with a Pacific perspective from COP 1 in Berlin to COP 28 in Dubai, United Arab Emirates. Today, we're joined by Rex. Rex, thank you so much for participating and, more importantly, a lifetime of service to make sure the Pacific voice is heard at the climate summits. Greetings from the Pacific, but I'm in Dubai, COP 28. Thank you, Joshua, and I'm so glad that we are able to connect. And this connection that we have is to connect with the world and humanity and what is an existential threat to the global community, the climate crisis. It is a global problem that demands a global solution. Let's get on to the questions that you may have and how we may be able to explain to our audience who are listening around the world and in the Pacific region, the Caribbean, the Indian Ocean, in particular the small island developing states, which we would like them to be the big ocean states because of their huge EEZ. Really good point for looking at their economic zones as you're describing. What's also important though when people talk about human rights is I really think it's important the way the Pacific sees them and also your perspective of what you think is so valuable. Human rights really do boil down to the right to clean air, the right to water, and the right to food. Can you expand on that? Yes, climate change is basically impacting on our daily lives and in order to explain it to let's say children and kids around the world, it is about the air we breathe, the water we drink, and the food we eat. Climate change has no borders because it impacts across. So if it impacts the air you breathe, the pollution that the carbon dioxide and the trucks and the fossil fuel is polluting the air, then you'll be breathing polluted air. If the water is polluted, you are drinking polluted water. And if the food is also polluted, then the farm products, the sea where you get your fish, and across the sea and the land, food, water, and air are impacted upon. And that is as simple as you can put it. On the global scale we are looking at how the impacts of climate change in terms of the sea shores and the land, the erosion and all of that. So it is really the daily lives of people that is impacted upon. And as water is the human right or food is human right, and the air we breathe in is human right, then that's an impact. I will get on to the migration and how the threat, the climate crisis affects nations that had to move because of the sea level rise and all of that. That's basically what it is to assure in terms of how it impacts on our daily lives. And the small island states are more impacted upon because they are small and ecologically vulnerable. That's a great point. And it's also the universal declaration of human rights does guarantee people around the world a framework available to assist with all existential crisis is facing humanity. And the UDHR was drafted and adopted in 1940 in Paris and it did rise out of the ashes of the Holocaust but it's still applicable with new emerging challenges that you were sharing. But it goes back to those core aspects of right to clean air, right to food, and of course water as we need all those to basically survive. So that sustainable environment is crucial and the ability for us to participate in politics to guarantee those rights is really at the core of the COP. Correct. So the COP process is a government process and because it's a government process it takes time to negotiate agreement on adaptation, mitigation and financing and collaboration, research and all of that. So the conference of the party process is 10 or more years behind reality. And also the COP process is a government consensus process and therefore it is slow and arduous. So we are now in COP 28 and we're still talking about the same issues about adaptation, mitigation, collaboration and financing. And I think in COP 28 taking the stock take, you have the Paris agreement, you have the Glasgow pact and we now last year we had the loss and damage in agreed to set up a fund for loss and damage for small island developing states which we want to transform to the big ocean states because of their EEZs and their large oceans. So they are not victims of the crisis but they are the big ocean states with the fishery resources and other marine resources that exist there. So EEZs of the big ocean states are critical and we want to save the oceans to save humanity or save humanity by saving the health of the oceans because the health of the oceans, the five oceans of the world, 71% of the earth surface is oceans, water, lakes, watersheds and rivers and lakes. All of that contribute to the water resources that the world needs to the health of the oceans is critical for the health of humanity. And the Pacific Ocean as the ocean of peace, we want the five oceans as oceans for peace inclusive of the five oceans. Saving those five oceans is to save the health of humanity. Oh that's a really good point and what is so crucial I believe about your perspective is you were at COP 1, the first COP ever in Berlin. Can you describe what COP 1 was like and looking at it now for COP 28? Yeah COP 1, it was an emotional impact on the small island developing states in Berlin in 1995. What we were asking for was the the AOCs, Alliance for Small Island States, would like to have a 20% reduction to the 1990 levels. That was the cry in COP 1 that we requested the next one parties, those that pollute the started the pollution of the the earth should reduce the emissions by 20%. So that was a big big ask to have an next one parties to reduce the emissions to the 1990 levels by 20%. As well the Alliance for Small Island States had the emotional impact to say that because we are frontline states that we will be mostly affected, most affected, although we contribute less to the pollution of the world. We are the first ones to be impacted upon and therefore we regard ourselves the analogy we used 27 years ago, 28 years ago was that small island developing states are canneries in a coal mine and that is the image that we had then. So over the last 27 years now 28 years later we are still discussing the issues that have been on the agenda for a long time and the main issue now is financing and the global community needs to work together with the different sectors, the private sector, civil society and the governments need to work together to have the enabling environment to raise the funds to mitigate, adapt and collaborate in order to address the key issues that we are facing in terms of human rights of all people in the world, in particular the indigenous rights people in indigenous communities who are custodians of their own resources you know have been impacted upon and the small island states the water the water say in Kiribati they had to use the same water that they wash their dishes they recycle that to also have a shower and then wash dishes and then dispose the water into the garden for the plants and the crops that they want to grow. So a six buckets of water can be used by a family of say 10 to 15 and they had to fetch the water and at the same time try and use the same amount of water to do the dishes and base with that as well as putting the water at the end into the plants and the gardens around their houses. So that's how important water is and which is part of human rights. No it's a really good point and as you're at COP 1 and now you see COP 28 supposedly it's the highest number of people here maybe you could share a bit about what you see around this COP 28 in Dubai and going forward as humanity. Yeah in COP 28 the big difference now is that you have more people participating in the COP process uh for example today I was at the the main plenary where you have the indigenous people talking and you have women and young people gathering together in the hall so at least you would have something like you know a couple of thousand people that are in this big hall and they were able to express themselves through a structured way but people listening and yelling and agreeing to the speakers and the advocates the campaigners all in the room trying to have their voices heard and I think there are more voices today than there were in the previous COP so COP 28 really marks a huge number of young people getting involved the youth are getting involved the women the indigenous people the people whose rights have been denied in the previous years so now their voices are being heard and I think that is the biggest difference I see between COP 1 and COP 28 the largest number attending this COP 28 is in the in thousands I I heard the number from 75 to 79,000 people gathered in Dubai COP 28 and it's true it's there's so many aspects as you said there's the when you first walk in there's those two giant buildings the B1 with halls that sit thousands of people and then if you keep walking you then see up to B7 and each beam seven is just an area and then there's buildings all these buildings of 89 86 there's pavilions then on those pavilions there's booths and you were yesterday speaking on and Monash what were some of the topics that you were looking at at the Monash University booth and what were some of the discussions that were pertinent to the people of the Pacific and all those caring about our beautiful planet. Yes there's a whole series there from youth gatherings and in one of the I think on day eight on the 8th of December the youth were there in numbers I think there were at least three or four groups of youth coming in to express their place in the stage so Monash hosted the youth as well as Monash hosted yesterday was the oceans the Pacific island nations were there with the Caribbean nations to try and articulate the the need to to protect the oceans because they depend on it and also to address the question of small island developing states to become the huge big ocean states because of their EEZ and taking care of the five oceans and their health is taking care of the health of humanity as well as the health of the Pacific depends on the Pacific Ocean itself and protection and management of the resources in the in the ocean like tuna because the Pacific houses at least 60 percent of the tuna resources in the world so Monash has a big delegation and they have they had a pavilion Monash pavilion in the blue zone that has been managed by a group of the program designers for Monash hosting so many panels of discussion from sustainable development climate change reduction of poverty and having you young people youth to have their voices heard and the the the whole range of participants as well as organizers of the of the the Monash pavilion we have associated professor Susie Ho professor Sally about about and we have a whole team there dog we had the Dr. Benjamin Thompson who was also quite key in the organization and the whole team of Monash the professors and associated professors and doctors and the whole team there so I was pleased that the Monash is a picture there and we have a high side professor Paris Narayan who spoke and delivered a team from Fiji in climate accounting and that is critical a new area that has come up now in the the stage climate accounting and this is a unique feature of the the the island nations moving forward to professor Paris Narayan with a team from Fiji coming to to explain what climate accounting is and what the potential is there is so it's a whole host of things so I think COP 28 has more to say about the world but we we still need to do more particular I'm quite concerned about the financing area Joshua and we need to work on that no there's definitely a lot and as you look from COP 1 to COP 27 last year in Charmel shake and then this year being there it really does combine a whole field of human rights offenders you have academics you have attorneys you have activists and even artists all trying to make sure that the voice of the earth gets out and as you're describing it it reminds me of Malama Honua in Hawaii to take care of each other but also take care of our island earth because we understand what's like to live in a fragile ecosystem can you share a bit and what you were describing of when we look at what people are facing with the climate crisis in a way it's intangible it's you know you did say and it is true we have to look at funds but the other side is certain things are beyond what the current economic system can absorb and you are getting to something deeper when we look at how indigenous and pacific island peoples are impacted with the climate crisis let's take Tuvalu which is the lowest lying apple country in the Pacific so if Tuvalu suffers from sea level rise the first thing they will have to do is if you relocate the the people of Tuvalu that's fine but then they will leave behind they heritage the culture their identity and that in loss and damage that is not considered as an asset because you cannot account for it there is is is non tangible they can only count for the tangible things you know their houses their buildings the material wealth they have but then the the human none their consciousness their being their identity that's what they the loss that cannot be ascertained because it's it's non tangible and that is that is key to relocation of communities throughout the Pacific now the biggest health that has come from the region is you have organizations the prop agencies such as spread SPC PIFS Pacific Island Forum and the USP those crop agencies the FFA forum agency the the crop agencies in the region are doing their best and they are they they do the capacity building they ensure to build resilience in the countries and they support the countries to to adapt and build resilience and also bring in money from other donors to support the ODA that the countries get from donors and then on top of the ODA is the risk the additional financing which is climate change and I think that's what is being done today and one of the problems with that is that the donors need to be educated about financing the block grants to support the the cost of climate change as well as the ODA cost rather than working in silos and finance a little bit there in climate change minus a little bit there in terms of development they need to be educated to have to treat climate change and development integrated and therefore this is where Monas has come in to help in the interdisciplinary nature of climate change and development so you have the faculty of architecture the faculty of sustainable development and you have engineer engineers working together with the social scientists and that and the medical doctors working hand in hand with the other faculties to address the the health in the for example there is a project in Fiji that's a good example called RISE which is revitalization of informal settlements and other environments this is a classic interdisciplinary work between the faculty of architecture engineering and engineers and carpenters and medical professionals working together with FNU Fiji National University and the the the local people in Fiji to try and enhance that interdisciplinary work the biomimicry kind of nature based solution and that is quite a good example of what universities can do interaction with the people now that's a really good point you also point out and illustrate how many more aspects are included in a way you're shattering the silos from early on in the cops and drawing all the connections and with those connections showing the consequences and so when we look at article 13 it does provide the path for people of the pacific living on the front lines of climate change to be able to be included in article 13 recognizes everyone on earth has right to freedom of movement and residence within the borders of each state thus recognizing each state also has a right to exist so it's that self-determination that all people have the right to exist and are able to be part of the global family or ohana as we call it maybe you can share with us the other aspect that everyone has the right to leave that country but also be able to return to one's ancestral homeland noting then that the land must be there forever for people to be able to have these rights yes that's a very important point Joshua the the first thing you want to do is if we act now rather than waiting we may be able to save these apple countries so they don't have to leave their homeland and therefore the human rights aspect is quite a critical one and this is has to do with the the respect for human rights and to be compliant and and respect human rights everyone has the right to live and that is the reason why the the small island states have a right they are ecologically vulnerable but they are not victims of this crisis they do not contribute to the crisis in the in a large way as the the biggest states and the annex one parties but one thing is in good will and good faith the small island developing states are working together with the global community and the the regional communities to ensure that they also contribute towards adaptation mitigation and financing as well as building resilience and I think building resilience is fundamental you can adapt but if you if you don't build resilience that the adaptation can get a shock and you have a lot more problem than being resilient so the resilience is like an athlete building his or her stamina to run a distance race and and therefore you are prepared to withstand shocks or stress and that the stamina and building resilience is also the same with a nation or people working to ensure that the level of resilience is built through capacity building and working on both the health and the the physical health of the people and the nation which is part of the human rights and respect for it that the respectful the water they drink the air they breathe and the food they they grow and eat so the interrelatedness of the different sectors of society and therefore you know the whole question of labor force and how labor and the unions need to be respected for what they represent because their jobs that depend on the employment that they have and the decency of work and those are elements of human rights decent work and employment and job job creation is quite critical and therefore labor unions transport the whole area of transportation is critical and we need to look at whether transportation on land or at sea or air we need to reduce emissions and have renewable energy and turn to renewables in order to reduce the use of fossil fuel and we can transition from fossil fuel to circular carbon economy where we depend on renewables and clean energy those are really good points as we look forward and it is important as you can describe all those different aspects of these rights can you provide a vision for the future of this important right for migration with Tuvalu in Australia having a recent agreement and other aspects where the people are guaranteed that they'd have a place to live even fees you where land was purchased to make sure that people can have that land that identity as you were saying in that place-based perspective of what matters most of that collective fully on our responsibility for one another. Yes I think the bigger nations like Fiji the Australia and countries like Papua New Guinea and Solomon Islands they also be considered and for the relocation of the smaller countries such as Tuvalu and Marshall Islands and Kiribati already the Solomon Islands has relocated Kiribati people back you know 50-60 years ago we have now a Kiribati community on Wagena in the Solomon Islands so that is one of the first relocations but Kiribati and Tuvalu need to be we have to be prepared to look after our brothers and sisters if something happens but we hope that they don't have to move but it is important that we look at the question of migration relocation Tuvalu now is looking at different ways of adapting they even want to turn Tuvalu into a digitized kind of nation where they have their data collected and their identity is being put into a computer data system so if something happened at least that they have a storage of their history and all of that so they are thinking ahead but we hope nothing drastic will happen and therefore we need to take action now rather than later to save the fiscal islands and Tuvalu is planning at looking at raising the land so that and that will cost quite a bit of money but you know it might be worth it to look at the cost factor of raising Tuvalu to higher ground so that to avoid sea level rise great point Rex and that really does bring us to where we're at that understanding human rights to make sure we're looking at human rights for all we're looking at the issue of migration but it's that holistic human rights those inherent rights that we all have from self-determination but also that right of solidarity we all share to stand up and we're in the final 24 hours of the negotiations people say it's 1.5 to stay alive and based on your perspective of climate change we appreciate you joining us and thank you so much for all you do regarding oceans for peace


Welcome families caregivers staff other members of our community and most importantly our eighth grade students. I am so honored to be here with you today to celebrate our eighth grade students. Entering my first year at Main Street Middle School I was struck by the caring students that entered into the doors each morning. This group of amazing and clearly resilient students have been leaders in our building in our community. Each of the students have flourished in different ways and this year I've been lucky enough to hear and see so many ways in which they have grown academically, athletically and socially this year. From their wacky French stories, their amazing identity posters, their passion projects, the Vermont History Day projects, early morning jazz rehearsals, dodgeball tournaments and dance parties in the halls. It's been an honor to watch and a pleasure to watch you learn, lead, create and care for each other this year. So from the bottom of my heart, thank you for a great year. I cannot wait to hear about what you are able to accomplish in high school and beyond. This evening you will hear from two of our eighth grade students. We do have a change because of our electricity issues. Unfortunately we will not be having our musical performances this evening. So I know our students are incredibly disappointed from that and I'm kicking myself for not having recorded the rehearsals today. But we do have two speeches from two of our students. It's my pleasure to call Ila Robacheck to the podium to share her speech today. I apologize for my language but the idea crossed and it's not the teachers or the classes or the building concerned about the doors on the outside of the second floor of the building leading to the abyss of pavement and stomped grass that surrounds us. But that's not really either. It's more just this age. It's hard even if nothing else difficult is going on. But for us there have been a lot of difficult things going on. Sure some of them might not have been the end of the world though they did feel like it. For example in fourth grade you may remember the playground was being redone and we were forced to stay in the cage as we called it. A little fence on the street. Then before it was finished we came here. We were told that we could go back for one year during our fifth grade year to plan the playground. But before we got the chance a real tragedy struck. The almost literal end of the world COVID-19. Yes COVID the world pandemic came and as you probably are already aware it disrupted a lot. For me all of sixth grade was spent online and though I did not learn much academically I did get some good memories of stress with scissors. Good times good times. I'm sure my parents remember. Then seventh grade was still not normal. We not only had to wear masks but pretty much everything was messed up. Lunches were even split up into the classrooms and I always remember that I was in Miss Harper's room. We watched several videos starting out of course with the B movie. Then at some point moving to Mrs Harper's favorite octanauts. We even watched the first few seconds of a Barbie movie before we all went crazy and stopped. The most normal year but it still has not been that great. We have not had a course teacher for who knows how long and after all the time of social distancing and not seeing people we are still getting used to being back to normal. So yeah we've been through a lot from not getting a new playground to a world pandemic but here's the thing in the words of Sophocles. There's no success without hardship. Yeah we've been through ups and downs so many might look like waves on an ocean and we just sank so low on that ocean most of us probably almost touched the bottom but that only means that a huge wave is coming that's going to lift us out of this ditch you may find yourself in and sure the way up might not be smooth. There are multiple layers of waves in an ocean. They go in different directions and is a confusing swirl of water and feelings but look at those who are older than you. They already made it through this time in their lives and they turned out mostly okay. We just have to turn out mostly okay too and I'm sure we can and yeah as I already said the words middle school strike fear in the hearts of the bravest of people but for a middle school MSMS is pretty all right especially because of our amazing teachers who I'm sure we all will be grateful for. Teachers really do shape their students and the experience students have in school. So having good teachers makes a huge difference. Luckily for us we have more amazing teachers ahead of us. We even have a chorus teacher knock on wood.  It's just going to keep getting better. Next our students have an opportunity to choose and select a staff member to share a speech and this year they chose our new humanities teacher Melissa Piscotelli. Good evening. It is an honor to speak on behalf of the Main Street Middle School 8th grade 2023 graduates. My name is Melissa Piscotelli and I teach humanities. This year has been very special in so many ways. As I ruminate about this class here's what comes to mind. Strong critical thinkers full effort scholars, talented athletes, accelerated musicians, dancers and artists, student leaders, young environmentalists, theater performers, mentors, problem solvers, young adolescents who are ready to change the world. I've been so impressed with the drive and determination they have to exceed the standard while balancing all their aspects of their lives. They are caring and pathetic, tech savvy, gregarious and intrepid, sensitive and sometimes a bit sarcastic. But that's the beauty of the young adolescent, constantly transforming each and every day. I've watched them persevere and handle hard better in the academic, social and emotional aspects of young adolescents. They prevailed through COVID and learn how to adapt to the changing world around them. They have an array of skills that will guide them to success at MHS and in life. Some highlights from this year include our trips to Cosmer Point in Burlington, athletic games, the dodgeball tournament, the staff first eighth grade basketball game, which ended in a tie, school dances, the sustainability initiatives, Vermont History Day, Up for Learning, the Canada trip, the Little Mermaid, the talent shows, ski trips to Bolton, March Madness advisory challenges and the morning dance parties in our hallway. I will miss the spirit and spunk of this class, but look forward to seeing and hearing about the positive impacts all of you will have at the high school level. You are the future of this city and the state of Vermont. We believe in you and will always be there to support and guide you on this journey called life. When this class was in sixth grade, they heard the young poet Laureate Amanda Gorman deliver an inaugural address to our country. She ended her poem with these words of wisdom. When day comes, we step out of the shade of flame and unafraid. The new dawn blooms as we free it, for there is always light, if only we're brave enough to see it. If only we're brave enough to be it. Thank you for giving us the opportunity to learn, laugh and overcome obstacles together. You have taught us so much. On behalf of the entire staff, we are so proud of your growth and success over these past four years. Continue to be the light and shine bright in the city. And one last reminder, stay gold and don't forget to watch the sunset once in a while. You will be missed for sure. Best of luck graduates. Thank you. First of all, thank you for the patience of all of you. We made it here. We have light. Everything has worked out. So thank you very much. And we're just happy we can have this night continue. So it is now time to present all of our eighth graders with their certificates.  Yep, please. And eighth graders, I'm not going to shake your hand this time. High fives to all of you so I can concentrate on the next speaker. I would like to introduce our next speaker, who would be Maya. Come on up, please. Faculty and friends. Thank you all for taking time out of your day to celebrate this eighth grade class. I'm going to begin with a quote. American author Wayne Dyer states, we must accept the end of something to build something new. I tend to struggle when everything's end, whether it's the departure of a cast I have been a part of for a long time, or ending the TV show I have grown attached to. I've never been able to immediately let go. I know that we aren't all best friends. We've had our differences. But this group of students have conquered so many things. I'm not going to be a part of this. I'm not going to be a part of this. But this group of students have conquered so many challenges together. As you know, our fifth grade year was cut short due to the pandemic. But what was once normal became a two year quarantine. I think this major struggle made me realize just how much the teachers at MSMS truly care about their students. I remember as our 2020 school year came to an end, Ms. Parker drove around town delivering Italian ice to each person on our team. She was able to keep connections, possibly even strengthen them through the shared experience that no one could have expected. During the summer between fifth and sixth grade, my mom informed me that she was disappointed I was unable to finish my school year with Ms. Parker and Ms. McGuigan. I find it amazing that they were able to create this strong of a positive impression even after our year was cut short. We didn't get a normal sixth grade year either. We were stuck in our classroom for the whole day with the same people. And I remember at that time I would only wear hoodies with my hood up and my mask on. It felt as though we were all isolated despite the fact that we were stuck in the same classroom day in and day out. Sixth grade was the year I was able to connect with my closest friends. It was also the end of a friendship I truly cherished and still miss to this day. COVID had many impacts on children our age. It caused a lack of communication between our grade. Communications were often awkward or inconclusive, which impacted our ability to create stronger friendships. Most of us were only able to see one or two friends for the majority of those two years. We like to say that life today is back to normal, but the truth is that it will never be the same. I think the thing that I will miss most about middle school is my seventh and eighth grade class, 8D. We have been together for two years at this point and it's weird to think about continuing school and ending up in a classroom where I don't see all of their faces. Some of my favorite school memories have resulted from this group of students, like when one of my classmates had gotten stuck in Michigan's recycling bin or the body systems project some of my friends and I were impressively committed to. But I think my favorite memories overall consist of all the times that students and teachers alike have had each other's back. Ms. Harper and Ms. Piscatelli stand out to me as teachers that will do anything to come for their students. Both can read their students like an open book and once they realize something is wrong they're immediately to the rescue with tissues and candy bars. I don't think there is anything more comforting than realizing that a teacher truly cares about you. The friends I've connected with this year have equally had my back. They all truly love and get each other despite some differences we have encountered. There are countless occasions where one person is upset and the rest of us are right there supporting them through it. Comfort for us comes in all shapes and sizes and being able to laugh with each other is just as healing as a pat on the back. Even though one of my best friends is moving away I will constantly look back at these friendships and remember them as one of the best parts of eighth grade. When we were 10 and 11 years old we wrote letters to our eighth grade selves. My sixth grade teacher Ms. Atiyah was kind enough to give me my letter early so I could reflect on it. As I read back I was met with embarrassing memories and jokes of how I acted in sixth grade. In my letter I wrote about what I thought were some very serious topics that had been going on at the time. I've completely forgotten many of these events and incidents. In hindsight they seem unimportant. Sixth grade feels so far in the past though it was only two years ago. I've since forgotten the inside jokes I believed I would never forget and I found my confidence in my academics as well as myself. All I can say in conclusion is forgetting is not something that I recommend. Remember the small things that happened. These small memories can create the fabric of our experience. Even if it was one funny thing that a teacher did or a project that you did really well on it will make you happy that you have this experience and alas it leads to realization that another phase has ended. I'm grateful to have been a part of the Main Street middle school learning community. Everyone has been genuinely kind and empathetic. I'm looking forward to beginning a new chapter in my life at Montpellier High School. I'm sorrowful to see this chapter end, but I know it has prepared me to do great things that will make an impact and that I care about. Thank you. I wish I'd been able to share more memories with these students. I know that they are ready to spread their wings as Solans here at MHS. As you reenter this building this fall as the freshman class I hope each of you will continue to be curious, kind and grow into the leaders the world needs and we know that you all can become dramatic cause. We rehearsed that. Principal Gingold, I now present to you the MHS class of 2027. Good evening everybody. Class of 2027 congratulations. Today you're leaving as Gators, but you're really becoming Solans at this moment. So if you could all stand up please and follow me out.


Good afternoon. Good afternoon, everybody. Thank you all for coming. This started out because I went to a new client and I looked at their code base and all I wanted to do was rant. This is wrong. That's wrong. And I thought the best therapy for getting the rent out of my system was to turn it on its side and say I am not going to say what's wrong and try to try and say what you should be doing and what is right. And so this talk was born as a result of that. First I'm going to say a few words about my background and then comes the meat in the sandwich and the message there is good error messages are useful error messages and finally a little framework that I put together that puts all these ideas into practice. Although I have to say don't have great expectations.  Okay, first of all Me I'm Paul Keating. I've been programming in Python. Oh lord. I've been programming in Python for a living for well since Python 1.5.2 And I've been attending Europe Python for nearly all of that time. My first Europe Python was in Charlewine Belgium in 2003 that wasn't the first European Python that was the previous year, but that was my first Europe Python. I Support an application that has embedded programming languages Python one of the most prominent and I write tools for programmers applications for end users and practically everything in between and It's one thing to be angry about The bad error messages you see but it's much more important to say what is a good error message And this is what this this talk became good error messages are useful error messages So the first question is useful for who? And this is just another way of saying that as a writer to get through to your reader You have to know who your audience is Look at what you're writing. Is it understandable to that audience? Now if your audience is if it's an interactive application then your audience is probably an end user If it's a batch program then your error message is being written to a log so that's going to be a support person or a programmer and If you're writing a library or an API then your support person you know the person your audience is a programmer and you have to speak to that programmer as a programmer and Pop-ups are not helpful there Sometimes you do have two audiences If you're writing a library module, then one audience is the programmer who is calling into your library module and The other audience is the end users of The application that that programmer is writing But for the present just let's consider the fact that let's consider the situation where you'll you have just one One audience because two audiences hard. There'll be more about that later on Consider first of all is your quest is your message understandable Now this is an over the top example As far as I know it says error file not found in Punjabi It's an over the top example, but there's no getting away from the fact that if you show a stack trace To an end user It means no more than that if a stack trace leaks out to your end user. That's a failure Stack trace is indispensable to a programmer. It may or may not be a value to a super user depending on their background It's gobbledygook to everybody else and even if someone can read a stack trace if they don't have access to the source code It's still not very useful. I Don't know if any of you here answer questions on stack overflow anyone Over and over in a comment you have to tell use the people who ask questions on stack overflow Please post your stack trace. I think I have to do that Two or three or four times out of ten for every question I try to answer and that is because People don't actually know how to read stack traces without learning how to do it and these are beginners usually they're very very very close to being end users and If the person who sees your stack trace doesn't understand it then you're going to have to do some translation Now this came from a tutorial Student called me over and said I don't understand this message. It says dict. Isn't callable He said I know a dick isn't callable who said anything about calling anything and His problem was really a syntax error He should have used square brackets instead of round ones and he lacked the he lacked the background to make sense of What the error message it was telling him the error message was telling him you think you have a callable in that variable But you don't you have a dick But he knew he had a dick and it wasn't any help to him to say that he That he was trying to he was trying to call it Now fixing this is not a question of fixing the error message The interpreter and the people who write the error messages in the interpreter have to assume that the programmer has at least grasped the basics of the language and That's really what training courses are for. Oh, Lord but Even if the interpreter can assume that the programmer has grasped upon fundamentals of language if you're writing a library You should not assume that the programmer who is using your library is an expert Most programmers use libraries on a casual basis. They can't be all be experts in every library module There are dozens of of There are dozens of things There are dozens of libraries in the standard library that doesn't in the standard library and there are Thousands on by PI you can't know them all nobody can so To show you what I mean. I was using beautiful soup And I made a beginner error and the library would have been entitled to issue this error message Results that has no attribute prefix, but it didn't what it actually said was this This not only told me what was wrong with my code. It made a shrewd guess at the concept. I had failed to grasp That shows concern for supporting a beginner for seasoned programmers fixing such an error is quick You got the error because you wrote food up prefix So you go to where food was last assigned and You see it was assigned by a call to find all and you look up find all to see what it actually returns And there's your problem solved that four-step process for a seasoned programmer is so automatic You don't even notice you're doing it But it's hard to appreciate sometimes that for a beginner They don't even know what start Now when I was writing this actually went to read the code in beautiful suit that issue that error message and there it is It's a simple subclass of list All it has is one dunder method The only reason this subclass exists is to give that nice error message That was why it was put there I Think that's really great because it shows real concern for the needs of the user who may well be a novice The next question is is it explicit? This code is from an end-of-day batch process It writes its message to a log that log will be read if at all the next morning Now the thing about back batch processes is they can't just raise an exception toss their toys out of the Out of the cart and stop Because in a batch process there is some client system downstream disease expecting the output from this program It can't just stop in midstream. It has to Deal with the error as best it can and carry on Now the question here is why is anybody reading this log? Well It's because the manager of a downstream system put in a ticket or sent an email saying look I was expecting 5,002 rows in my interface file and I only got five thousand and the person who actually reported the error can probably even tell you The numbers of the trades that he didn't get that he was expecting So your application supports person already knows that something is wrong And he already may already even know what what trade was giving the trouble and then he reads an error message that says Something went wrong with trade one two three four five Yeah, thanks a lot guy. I knew that already If an error message is a call to action Well, the only action this makes me want to do is put my fists through the screen. Sorry about this In this situation trace back is your friend trace back allows you To put all of the information that would have been in the exception that stopped the program and then carry on So because this is being read by an application support person It's trace backs are allowed just write out the trace back and carry on It's a very very simple thing to do and it's so easy You only have to like add two lines to your program import trace back and print and trace black dot print exe And that's it. So The thing there is that if you don't have a sufficiently explicit error message Then the person who's reading it doesn't know what to do The next thing is is it unambiguous? Now we have a situation where the message is going to an end user The user is being told they're using the wrong payment type if they don't understand Why they're getting the message they'll not want an explanation and it's really helpful in that situation to know Which validation rule they have broken? Now in this particular case you see an exception being raised But that is actually being tracked by the application the application puts a pop-up and says you can't do that So they don't see a stack trace or they get is the message the trouble with this is That there are two identical texts in the message in the program if your programmer he's all he's got to go on is The text of the message and if he searches through the source guess what he's going to be pointed at two different places in the code So the rule is don't put two identical text into error messages Because the error message there the text of the error message is performing the same role as a line number would in a stack trace At the very least put in an extra full stop on the end or put one and two or a and B or something So that when the person who's trying to follow up this problem knows what could go for it to find out what But what it is he knows where to look if you point them at two different places in the code It's likely going to double the time to resolve the issue. I Will talk more about this issue of later on and the next question Now I'll leave you to read this for a bit If I can get the thing to stay on This try accept look at what it's doing It calls a function It traps the error it changes the exception type and it says the error happened in that line and Furthermore the error message that it gives you Error occurred in call to that function tells you nothing that you couldn't have to learn from the stack trace It is doing absolutely no good whatsoever So in this situation don't point the user at this point in the code because that's not where the problem is the real thing to do here is that Just call it If you're going to raise an exception anyway, well raise the proper exception So substituting your own error message here just misleads the person trying to find the problem and the final question is Does it work? The difficulty about exception handling is that it very often doesn't get well tested It doesn't get well tested look at that code and let's assume That the exception is deep and far inside that first call If that happens then the assignment to curve name doesn't take place and So the print call at the bottom will fail now. This is showing Variable reference before assignment because you mentioned the variable in the print statement But it hadn't been assigned yet There are other possibilities very often you'll see an attribute error because something wasn't initialized or you'll get formatting errors But all told this is actually pretty good It shows you what originally went wrong the original exception and it also tells you there's something wrong with your acceptors That's terrific. The only thing that bothers me about this is that it is pointing me To two different errors at two different places in the code and that text tends to make me go a bit cross-eyed but This is in Python 3 as it happens The code where this is taken from is actually running in Python 2 and in Python 2 there are no exception chains And so all you get is the x that all you get is the error in the exception and The only way to find out what's really wrong is to go fix your error in your exception and then rerun it to get the real thing That went wrong in the first place Sorry about this So you have code like there and you want to make sure that your acceptors really works Well, one thing you can do is just force it a zero a zero divide at the top of your try clause And that will force the exception and then you will know whether you have all the information in your Acceptors that you want to print to the screen. I Thought everybody knew this dodge, but apparently not so that's why I'm mentioning now This little framework that I'd like to introduce to you I'm going to have to talk a fair about about my working environment And the challenge was to apply these principles in an easy way that could be mastered by people who are Super users and not professional coded I'm going to talk about a little about the software environment and the people who write the error messages and what sort of validation rules They are our application vendor defines hooks. These are points at which the application will call your code In GUI programming, they would be called invent handlers or callbacks in your callback You get Your function callback function gets called and you and there are three things you can do you can silently return You say I think this data is cool. You may save it in the database The second thing you can do is fix the data You don't like and then silently return and the save will get saved in the database And the third thing you can do is raise an exception if you raise an exception Then the application will see the exception trap the exception and give the user a pop-up to say you can't do that because of this validation error The trick here is that if you raise an exception because there's a validation problem You'll get the pop-up, but if there is an unexpected exception that you weren't expecting and you didn't trap for Then the user will also get a pop-up and That's something you really really don't want it very often happens when you move a new validation rule live that There's a regression error in it that wasn't properly tested And so you get a new exception in that has got nothing to do with the validation rule necessarily But stops the save from happening and that can bring the system to a grinding halt and you can't do that You're in a situation where you're validating a trade and somebody presses the save button and now he can't save a trade any trade You really want to avoid a situation like that because it's extremely embarrassing if it does this is what the Application does if it's if it gets an exception it doesn't give a stack trace It just takes the exception text and puts it up on the screen And this is something I deliberately did in order to get that pop-up to put on this screen I just named a module in a way that the validation rule didn't like and That's what that's what the result is, but it doesn't have to be a Python module Of course, it could be anything now secondly a little bit about the people who write the error messages They may be professional coders, but they frequently are not they may be back-off of super users. They may be risk managers They may be accountants Why aren't programmers writing these well because it works better if the people who know what they're doing write the code directly Python permits that that's why it was a really really good decision to put Python in as the embedded programming language Now that would be fairly an obvious thing to do today But the vendor did it in 1997 that was false-sighted and also rather courageous so we get complicated corner case validation and The end users very often don't understand why they save as being rejected They're often regarded as a bug and the validation problem may be so subtle that the developers don't understand it either So developers responding to a bug report may need to get a subject expert to go to the user to explain to them what they did wrong and that means you have to identify the rule that was broken and Maybe you have to run a blame on the code to find out who wrote the rule And then you go to that person or his department and you say hey explain to me this Actually better than explaining to me. You just go to him and explain to him what he was doing wrong So the requirements were it had to be simple cut-and-paste coding that non programmers can use quickly and accurately It must be possible to identify the rule where the problem took place even if even if there are duplicate messages and Finally unintended exceptions mustn't bring the system to a halt Now super users very often do attach the same message to two different situations They may do it accidentally or they may even do it deliberately because they don't understand why it's a bad idea and the solution consists of one simple class and Also a way to distinguish between the exceptions that we want to propagate to a pop-up and the exceptions We want to do something else about because we don't want to bring the system to a halt now This validation error class is really really simple its sole purpose really is to Identify the exception as a validation error and not some other error and secondly to Identify the point at which the exception was raised That function underline on there over there all it does is pretty well the same thing as the Thunder line macro and C it tells you what line number the problem was at and there are two backs in there because it has to Go back one stage out of the function and burr one stage out of the exception call to get back to the line where the actual exception was raised and When you when you do accept raise that exception the validation exception that is the thing you see if you look there you'll see the Validate text object is the name of the validation function and the 977 is the line number it with the raise statement Then you can say to your programmer Well go and look in this function It's on that line and he knows exactly where to where to find the problem And then he will very soon know who to go and talk to to find out what the error is What's really important here is that we raise a validation error So that the application rejects the save and suppress we suppress all the other ones You see accept exception the rule say never do that well We do because if there's an unintended exception that we weren't prepared to trap We cannot allow that to lead back up to the application level because it will stop the save And you really don't want that to happen now it gets written to a log on the screen Not all users will see it and some of them won't report it even if they do But super users will see it and you'll find out about it eventually now This is one case where I haven't been true to the source I did this in the interest of getting it all on to one slide There's about 15 lines to determine which validation function you call when And that depends on what object it is you're trying to validate So it isn't really called my validation function Now I mentioned earlier that it can be difficult to have to handle messages that have two audiences And this little example here illustrates two things you can do Firstly have different channels for different levels of messages So an end user message comes in a pop-up But the stack trace gets written to a log And the second thing you can do is raise different kinds of exceptions for different things if someone's calling into your library Then it may be an error on the programmers part So that's one kind of exception It may be things that you expect the application programmer to anticipate and do something about And the third kind of exception is things that neither of you can really do anything about unless the user actually gets involved Suppose for example that your library needs a resource A web page and network connection enough disk space If the user's lost his internet connection or has not enough disk space There's not anything very much that your application writer can do to fix that But you can make the application writers life easier by having different classes of exceptions for the different things that can happen and the different things that can go wrong So To sum up An error message is a call to action What do you expect the reader of the message to do with it? And the first question is is it understandable? Does he understand what is wrong? That's why you mustn't give stack places to end users Secondly, is it explicit? Does he know enough about what was wrong to actually go and do something about it? Something went wrong with trade one two three four five Doesn't tell you enough to fix it Third thing is is it unambiguous? Does he know exactly where to look? And the fourth thing is does it point in the right direction? Do not tell the person who's trying to solve the problem that was an attribute over here Attribute error over here when actually it was a key error down there now While i've been saying this i'm sure a lot of you have been saying to yourselves. Yeah, I knew that Okay, but that's just common sense And pretty well all of what i've been saying in here has been just common sense But I didn't make up these examples to put them on slides and then throw stones at them These examples are real messages taken from production systems that were written by professional coders So although what i've been saying is mostly common sense Well, I won't be the first person to remark that common sense isn't nearly as common as one might like but The good side of that is that the answer actually is simple. There's good news Writing error messages is common sense. It equates just to thinking about your users needs Think about the people who are reading your messages And what you expected them to do with them And if you do that and you do it well Then you really really can't go all that far wrong now I'm afraid my pacing here has been a little bit Put out by the fact that I've been had the projector go off on me a lot So a lot of the sort of intervening intervening chit chat between the slides I'm afraid was lost in the lost in the frantic clicking And so I've come to this rather at the end of this rather earlier than I had planned or rehearsed So at this point, um, I think I can call for questions because um, I've run out of things to say Raise hands for a question. Can I go back to one of your throwaway comments? Yeah, that uh, 10 people's divide by zero that you thought everyone knew but I don't know Can you go back to that? Oh Because surely it raises an exception. Yes, that's a whole point. Yeah, but therefore you crash at that point Yes, but you will if you get a zero divide exception Then that's fine, but if you get another exception because what you're printing in your accept clause fails That's what that's what it's meant to test um I may not understand Exception handling properly here. So the thing is that That is a bad That that print statement is a bad print statement because it can actually it can actually itself throw an exception If curve name isn't defined at the point where you do the print You're going to get an exception in the accept clause Okay, yes But you don't want an exception of the accept clause You don't want your you don't want your your stack trace to be muddled up with two exceptions One that was the real problem source of the problem and one that was the exception the accept clause The accept clause must actually print out the problem without failing Okay, okay So the idea of putting the divide in there is you force an exception and then you can that will allow you to see Did I did my accept clause tell me I had a zero divide? Or did my accept clause tell me I had Uh an undefined variable in my print state Okay, so it's giving you Something in the log file to find just to give you an index. It's temporary It's only there to test the accept clause to make sure that you haven't your coverage is good Right. Okay. Okay. Thank you Any more questions? Raise hands Okay, everything seems clear Okay, one more Thanks very much. Uh, just quick question like Do you have a vague idea of like the longest Message you should ever give because I've seen some huge ones very descriptive, but Well explicit better than implicit um I can tell you that In in this particular environment if your error message is more than 512 characters instead of getting a pop-up You get a scrollable window Um, I've never got that far Um, but uh If you know you're going to get a pop-up You don't want the pop-up the message to extend off the edge of the screen and so on So that really more depends more on the situation I think though that if it's really complicated what we do here is we put line numbers in and that will That will go to a subject expert who will explain The maybe then a URL or something that will give a give a help message would be an appropriate Way of keeping the message within reasonable bounds Okay, any more questions, okay, it appears it all was just common sense I'm sorry like thank you for the applause, but I think we still had one more question somewhere. Was it you? Sure. All right, thanks In the case you mentioned of the dict Example would you propose to change this error message saying You try to call a dictionary, but maybe you should use the square brackets No, I don't think we should change the error message and the reason why is because you have to You have to take account of the fact that the real error from the point of view of the of the interpreter is that You thought there was a callable in that variable and there wasn't now To the beginner he knows it's a dict and he expects the interpreter to know it's a dict And he doesn't understand that it could in the meantime have been reassigned to something else Very often beginners don't understand the pitfalls of dynamic languages And the fact that he knows it's a dict doesn't mean that the compiler knows it's a dict And and so I don't believe that it would be possible for the compiler interpreter To actually give him a message saying you've got your syntax wrong And in actual fact, you only have to explain that to a beginner once or twice and after that they don't have the problem anymore So that's what training courses are for Okay, thank you Did all Okay, thank you so much