I'm from Member's Statement. Thank you to the Member from Durham, the Member from New Market Aurora. Thank you Speaker. I'm pleased to rise in the House today in support of the Canadian Cancer Society's Daffodil Campaign. Every April, the Canadian Cancer Society's Daffodil Campaign raises essential funds to save lives and improve the quality of life for people affected with bi-cancer, spreading hope from community to community. A key part of this effort is supporting the world-leading work of cancer researchers in Canada to transform cancer care and improve the treatment experience. I'm thankful for the Canadian Cancer Society for all the work they do across this province, but also in my writing. I am confident that everyone in this Chamber had or currently has a loved one who was diagnosed with cancer. I have a sibling who was diagnosed a year ago and is today fighting for her life. As the member of the Provincial Parliament for New Market Aurora, I'm committed to continuing to work closely with the Canadian Cancer Society as they establish health policies to prevent cancer and better support those living with this disease here in Ontario. Thank you. Thank you the Member from London West. Thank you Speaker. I rise today on behalf of London West families of children with autism. After four and a half years on the waitlist, Sarah Ferrantz felt hopeful when her seven-year-old son Mason was invited to register for the OAP in October, but she has heard absolutely nothing since. While she waits the one time funding that paid for Mason's speech therapy has run out and so has Sarah's hope for Mason's future. After a 10 month wait for an assessment for his three-year-old son Luke, Sean Menard was told he could wait years for OAP funding. Sean wants a plan from this government to clear the backlog and get Luke the critical early intervention he needs. Sean desperately wants Luke to speak one day but says without help from the government, Luke may never speak a single word to his mother or me. Even for families who have been approved, the autism program is broken. Virginia Ridley's two teenage sons received OAP funding but Virginia struggles to find services geared to youth and faces constant delays getting reimbursed. At the end of February she was out of pocket $9,000. Speaker with no mention of autism in the 2023 budget these families feel abandoned by the Ford government. Where is the plan? Where is the urgency to fix the OAP and get Mason and Luke and Virginia's sons the services they need and deserve? Thank You Speaker. Speaker this year marks the 47th anniversary of the annual Festival of the Maples in Perth, Ontario. Since 1976 Perth has celebrated a legacy of liquid gold against a backdrop of magnificent heritage architecture on the banks of the Tay River. Hosted by the Perth Chamber of Commerce the Festival of the Maples embraces all that Lannark County has to offer with artisans, vendors, musicians and award winning maple syrup producers. For residents, guests and tourists of every age the day begins with steaming stacks of pancakes and on wines with music, shopping, dining and classic entertainment including the historic sap tapping contest and the wood cookie cross-cut saw competition. Speaker Lannark County is the maple syrup capital of Ontario and this time of year visitors are hiking our sugar bush trails, touring award-winning multi-generational sugar camps and heading home with some of the finest maple syrup in the world. Throughout Lannark County you'll find maple syrup featured in restaurants, bakeries, coffee shops and distilleries all eager to embrace the sweet taste of spring. Last year's festival featured 160 vendors and welcomed over 30,000 guests. This is the town of 9,000. 30,000 guests to this event. Today Mr. Speaker I extend a warm Lannark County welcome to one and all to experience the 47th Festival of the Maples Saturday April 29th in beautiful heritage Perth. Hope to see you there. The member from Thunder Bay, Superior Noe. Thank you Madam Speaker. Unfortunately the foreign government is not helping Franco Ontarians. The provincial budget of this year is actually a clear example of these policy. They don't have any program and any help for Francophone speakers. It is incredible. Our government is actually not having a real vision for Franco Ontarians. We do need a government which is going to show solidarity to Franco Ontarians which offer healthcare in French, which offer helps for mental health and helps people to have access to health services and to affordable housing. And one more thing. Very often the highways 11 and 17 are closed because of accidents. First of all we need to have inspections on these roads and also we need to control and to check the drivers life license of drivers of track drivers because very often these drivers are not ready to drive on these roads because of the weather conditions and because of the road conditions. Franco Ontarians deserve more than that. Thank you very much. First of all I want to congratulate the new Minister for Children and Community Services. Minister is a very compassionate and hard-working. Minister is someone who talk from the heart. I'm very excited to working with him as a parliamentary assistant. I also want to thank and congratulate the new associate minister for housing for a new role. Madam Speaker, the 2023 budget is resonate in my riding of Mark Antondale very well received. My constituents at the Armadale Seniors Club, Tamil Seniors Association, Boscow Seniors Wellness Club and Green Bro and Middlefield Seniors Wellness Club in Markham are all very happy with the budget and commanding that changes to expand the eligibility for Keynes program what he called as a current annual income system for the seniors. We have a Minister for Seniors aside beside me. Thank you Minister. Keynes program for seniors another important news and also my constituents like Miss Cho appreciate the increases in the ODSP benefit by our government. Also parents and students are both very happy to know that through the targeted math support an additional 12.6 million investment is provided. I will it will double the number of math coaches who will be responsible for implementing early intervention strategy for better understanding math concept. Thank you madam. Thank you speaker. Today I want to talk about my friend Marcel Sharon. Mars was a mill operator at Glencore back when it was called Balkan Bridge. He worked on the floor to blue collar job. He was a sort of guy who was friendly and quiet. He's definitely funny. He's proud to be blue collar but he wasn't a stereotype speaker. Marspelle spoke openly about the horrors of Femme aside and the damage it does to community. His sister Chantel was murdered by an ex-boyfriend and Mars shared his pain hopeful that it would help. Hopefully it would lead to change. Most people knew Marcelle is only believed in workers. He spoke for workers. He stood for workers. He simply wanted a better world for everyone. His activism got him more involved with his union and 2013 he was elected as vice president of mine million for local 598 my dad's union. Five years later he was their president. Unfortunately early in his term Mars was diagnosed with cancer. The fight with cancer was hard over the past five years but I witnessed a love story and I'm a sucker for a love story and fewer is beautiful how much Kathy loved Marcelle and how much he loved her right back speaker. It's easy to be in love in the best of times and it's beautiful to see love fight through in the worst. Last Friday I visited Kathy Marcelle at the Mizzone McCall hospice. Cass said he knew he had to come but he was mad and Mars winked at her. He said I'll get over it. This is the last time I ever see Marcelle speaker. A blue collar worker, a vocal advocate against Femmecide, a worker activist, a union president, a loving father, a loving husband. I'll miss you brother. Kitchener self-haspiler. Thank you speaker. A brief statement about about about death and about gratitude. When I was 19 about 17 years ago I was driving to work. I was late and I changed lanes to avoid a bus and I rear-ended an old lady and as I said that was 17 years ago and most rear-endings don't follow the story that we did but what ended up happening was we sort of adopted her into our family as a bit of a grandmother figure for me. Her name was Elta and she was from the island country of Dominica and over the years my mother took care of her and that care escalated. Elta passed away recently and in the course of her passing I had the opportunity to experience both the palliative care team in our area particularly Dr. Celine Sandor and then ultimately the incredible benefit that we have in Waterloo Region of Hostess Waterloo Region. A week before her passing Elta was moved to Lazard House Hospice and we were very worried that it would be incredibly stressful for her but her first day there I came into the room and she held my mother's hand and she just said I'm so happy and I want to tell them how thankful I am for them taking care of Elta in her years and how grateful I am that we have them in our riding. Thank you. Other statements the member for Haldeman Norfolk. Thank you speaker on Tuesday I was invited to a mom's and talk's tea party in the Hamlet of Fairgrounds Norfolk County. This tea party hosted by the Norfolk Community Help Center is part of a much larger picture a bigger community initiative. Speaker the Help Center supports women in the community largely from the Mennonite population but also women from the indigenous community and as of late the Ukraine. The goal is to often work toward obtaining a grade 12 education while learning English as a second language. Since the program began 64 low German speaking women have graduated with their Ontario secondary school diploma. The center also has a partnership with Fanshawe College and the Grandary District School Board. Currently 15 people of diverse backgrounds are learning quick books accounting. A mom's and Todd's program allows these women to come together to improve social emotional and general well-being. Many of the families served have between five and nine children. These vital community connections enhance independence and coping skills while raising awareness of nutrition reproductive practices and physical activity. Other supports offered are in areas such as settlement advocacy pre and postnatal care as well as low German interpretation. The supports being offered in the community continue to grow all on a shoestring budget all with the love of a few key people and under the leadership of executive director Nancy Hildebrand. Speaker this is a small but very interesting area with many issues and needs. I look forward to working with Nancy and her team for more opportunities to assist and empower this community. Thank you. Thank you. Member statements. The member for Mississauga Moulton. Thank you Mr. Speaker. Mr. Speaker culture gives us a sense of belonging and help us connect to serve and celebrate while bonding for life. That is why cultural organization like Rajasthan Association of North America do remarkable service to the world we live in. Started in 2007 Rana Canada has grown into a vibrant association of entrepreneurs, healthcare providers, lawyers, educators, financial and IT professionals. From last 15 years Rana has been promoting cultural values through community events like holy, Gangur, Canada Day, India Day and Diwali. Mr. Speaker tough times are the test times. During COVID-19 Rana members distributed meals to the homeless, supported hospitals, local food banks with the financial contribution. Rana also provided scholarships to deserving youth and supported students with extreme financial hardship. Provided platform to mentor local and international students to help them to better integrate, succeed and contribute to Canada. I am pleased to share that our Mississauga Moulton community office is joining hands with Rana to organize our blood donation drive in the effort to keep working for the good of the entire community. Thanks to Rana members for going above and beyond the call of duty and becoming integral part of beautiful music of Canada, your true representative of Ontario spirit. Thank you Mr. Speaker. Member statements. The member for Hastings Lennox and Addingson. Thank you Mr. Speaker. This coming Sunday April the second is World Autism Day. Many of us are aware of autism and we recognize that autism brings with it its unique challenges and obstacles but also strength skills and perspectives that enrich our communities and contribute to our collective growth. Now we must turn our attention away from awareness and towards acceptance and inclusivity. I ask that all of us here in the chamber and all in our audience embrace the diverse spectrum of human experiences by creating environments where individuals with autism feel valued, heard and supported. Let us take it upon ourselves to learn about autism to challenge misconceptions and break down barriers by cultivating a culture of acceptance. We nurture the growth of individuals on the spectrum and allow them to thrive in their own unique way. Speaker on World Autism Day let us commit to a world where awareness leads to inclusion, where understanding leads to acceptance and where every individual regardless of their neurological makeup has the opportunity to contribute their talents and reach their full potential. Thank you Speaker. Thank you very much. That concludes our member statements for this morning.


Hello, first of all, thanks to Simon for inviting me and also thanks to the other presenters here. I mean, I was during the break, someone was saying that a common theme here is sadness. There's a lot of sadness in these presentations, but there's also beauty in how the artists are approaching the sadness, so thanks to the other presenters. So I am a biologist. I work for a group called the Wildlife Conservation Society. Half of what we do is New York City zoos. The other half is international conservation, and that's the part that I work for. We work in more than 60 countries in the world, and what we try to do is conduct scientific research to best inform the protection and management of wildlife. So I am a wildlife biologist, and I work in remote areas. I've captured tigers. This is a little messy. I've surveyed for salmon. I've weighed bears, and my favorite, I've studied the world's largest owl. And people tend to get into my field to get away from people. People tend to be socially phobic and don't want to engage with people. And so as I'm in these remote wild places, there's people there. There's loggers. There's hunters. There's fishermen. There's reindeer herders. And so it took me a while to understand that the people who interact with the environment every day. People who share space with wildlife, these are the people that we most need to reach when we're trying to do conservation work. People like me can sit in a place like New York and come up with the best possible ideas for how to protect wildlife, but if the people who live there don't feel safe with having things like tigers or bears sharing forest with them, they're going to do what they can to get rid of them. They're going to poison them. They're going to shoot them. They're just going to get rid of the threat. And so I'm going to give a small example today about this using tigers. I would say a quarter of my pictures are not showing up here, so do bear with me. So some background, the red is where there are tigers now. The orange is where they used to be. So 120 years ago, there were probably 100,000 tigers in the world. Now there's 3,500 in Russia where I work way up there. There are 500 to 550 tigers. So this contraction of range and of tigers is because of us. It's loss of habitat and it's things like poaching. So about 20 years ago, some Russian conservationists decided to, I guess, bring conservation to the people and they started this thing called Tiger Day and it's become in the capital of Primoria, Vladivostok, it's become a pretty popular event and you have, my presentation also has parades. There's up to 20,000 people take part in Tiger Day activities in Vladivostok, which is pretty amazing. There's a huge parade, there are school classes get involved, kids paint their faces, they join these parades, they put on these skits. What impresses me about the Vladivostok Tiger Day event is that it's multi-generational, it's not just the kids getting engaged, it's older folks too. This couple here is reading a graphic about tiger conservation. And so the parade ends in the city square where there are informational booths. So nature reserves and environmental organizations have information about tigers and what they're doing to protect them. And they have games associated with it. So here there's several generations working together to see if they can pull as much as a tiger can, for example. So if you remember just a few minutes ago, I said that we really need to engage local people in conservation activities. Now getting people on board for tiger conservation in Vladivostok is, it's great, but it's not incredibly impactful. That's like if everyone in New York City got on board with cougar conservation or wolf conservation. The odds of someone tomorrow running into a wolf is pretty low. And just like people in Vladivostok, it's more, tigers are more of an abstract concept. So these are the folks we need to reach, right? The people who are walking the same rivers as tigers, sharing the same space with them. It's the fishermen, it's the hunters, it's the people who spend time in the woods and share resources with tigers. So look, my organization has a field office in a county in this province. And there are 10 settlements in this county, about 10,000 people total. And it's about 10% of tiger habitat in Russia. So what's more important to get 20,000 people to a day event in Vladivostok or focus on this to these 10,000 right here? So the last few years, we've been trying to replicate the tiger day model and bring it to these smaller villages where, I mean, tigers are not abstract. Tigers walk through town, bears walk through town. People encounter tigers, berry picking, hunting, fishing. So the presence of tigers is very real for these people. So what we do is recruit children from some of the larger villages in the county, help them put together performances, put together plays, skits, come up with some games. And then we take them to some of these villages. And so this place here at Ust-Sovolivka, some places are quite remote. To get here from the main road, it's about 20 kilometers of a side road that takes almost three hours to drive. I mean, that's how poor the road is. You can almost walk that fast. So when we come to a village like this, there is tremendous appreciation from the locals that we're spending our time to come and speak to them. So the kids we work with, they put on these plays. They show the interconnectedness between humans and tigers and other wildlife. And we also ask that the kids themselves from these villages put on performances. And some of them are pretty cute. Now speaking about impact, so this picture here shows every single child in that village. So when we're in Vladivostok and we get, let's say, 10,000, 15,000 kids at the 20,000 come to Tiger Day, that's a relatively small proportion of the overall number of children in Vladivostok. But here we have everybody. So it's much, much, much more impactful. And we pepper in educational information. We give them information about tigers. And so they're learning at the same time. And it is impactful.   He's going to grow up to be a fisherman.  People basically don't leave.  And that's who we want to reach. A speaker this morning talked about targeting the climate change issue to children. We're trying to do the same thing. The adult hunters and fishermen, it's harder to change behavior of adults. But you can change the behavior of children. And this is the way to do it. So in 15 years, 15, 20 years, when this boy is out hunting and fishing, he looks outside his hunting cabin and he sees a tiger. Or he's walking on a trail and he sees a tiger. He has two options. He can raise his gun, take the shot, maybe make some money off the skin.  He shoots them. Or he stands back, looks at this beautiful creature and lets it pass. So that's what we're trying to do is instill a conservation ethic in the youth of tiger habitat. And I think that this style of performance, performance art is a means to do that. That's it. Thank you.


Greetings and welcome to the Introduction to Astronomy. In this lesson we are going to look at astronomical detectors, or methods that we use to detect the light that comes from space. Now there's a number of different astronomical detectors that have been used over the years and we're going to look at a few of those over the course of this lecture. So the very first one that would have been used would be the eye. So what was the various first thing that we used was the human eye. That was how we had to observe what we saw. This goes back to prior to the telescopic times, so what we could see before telescopes, and it also applied for the first couple of centuries the telescopes were used. What people would do would be to glance through the telescope and then draw their image. And here we see some sketches from made by Galileo of the moon. And you can tell that they would be rather subjective. They're not going to be exactly the same each time because of atmospheric conditions and even just personal perspective what you're happening to see at that time. So these were some of the earliest ones that were used. They're not very accurate and they were different than what was being able to... They would show things differently by the person who happened to be doing the observations. So five people could observe the moon and five people would see slightly different things. You would expect that you'd see the basic patterns the same but the details would be a little bit different depending on each person's eye. So these were then replaced by the photographic plate. So if we look next at photographic plates, again, as compared to the eye they were much less subjective because they were a permanent record. So the photographic plate is essentially a glass plate that had a photographic emulsion on it. So these were much better than the human eye. They were significantly better because they were a very objective measure. There was nothing that was left to the interpretation of the person doing the drawing. So people could study the same object and would then get essentially the same image and be able to study that. Now they were inefficient because you only recorded about one percent of the light that was striking the photographic plate. So here we see an example of a photographic plate. Note that it is a negative and in fact most astronomical objects and detectors will get you a negative image. For a couple reasons, one primarily that it's a lot easier to see a faint object that's dark on a bright surface than it is the other way around.  But they were inefficient. Only one percent of the light was recorded. So you did not were not able to see as faint as you otherwise would be with a more efficient detector. It is also difficult to store the plates. They had to be kept under climate controlled conditions because heat or cold could damage the plates and then ruin the images. It was also hard to share the data. These are glass plates so if you wanted to share them with an astronomer across the country you would have to send the plate there for them to be able to observe to study it. Very difficult and costly to be able to do that. Now of course we have digitized a lot of the photographic plates so that they can be shared much easier than they were in the past. But these were used primarily from the time of the development of photography to not all that many decades ago that they were still the primary source that was used for taking astronomical photographs. So a photographic plate would have been the primary one that would have been used. Now more recently we use what is called the charge coupled device and you're familiar with these. These are used in digital photography but the CCD itself or charge coupled device is the same type of thing that's in a cell phone or a digital camera. They are significantly more sensitive than the previous detectors such as the photographic plate. So you see here it is just a little chip and you have a light sensitive material in the center and then you have all of the little encoding here to be able to read out the different rows of pixels. So each section here was divided into a number of pixels and then you could read out how many photons had hit each section of that and then use that to reconstruct an image and that's essentially what's done when you take a picture with a phone or a digital camera. The light falls on the CCD and then you read that out very quickly and the amount of different light, the amount of light that it struck each little pixel will then give you a brightness for each of those and you can reconstruct that into an image. So let's look a little bit more detail about how this works. So essentially in a CCD you have light strikes that surface that we looked at and produces electrons that are then stored in that chip and once you're done with your image and you read it out then you can count the number of electrons. This is much more efficient. Remember that we had about one percent for a plate, photographic plate, we can get 60 to 70 percent of the light being recorded with a CCD. So it is significantly more efficient, meaning that exposure times can be much less. We don't need to leave things exposed as long. So we can cut exposure times by 60 to 70 times and still be able to see the same amount of detail. So something that you wanted to do for an hour on a photographic plate may be able to be done in a minute or two on a CCD. So significantly more efficient than the photographic plates and again a permanent record unlike the eye. So we did have a permanent record of these. Now at the end of the exposure you essentially use those little devices in there to read out the electrons and that gives a representation of the brightness of each pixel within that. You can imagine that divided into millions and even billions of pixels.  So you can have a lot of them very easily and it's also all of course digital. So it can be very easily analyzed. In fact, you can see the images immediately after taking the image. You can immediately bring it up on a computer screen and find out whether your image came out the way you wanted it to or if there was an error or a problem that you need to retake that image. You still have the chance to do that. With a photographic plate you would have to go through the developing process and do that and that would be at the end of the night. So after you're done observing then you can take your photographic plates, develop them and see if they came out. But by the time you see them it's now too late to be able to make any corrections. So these you can actually see things in real time and they can be shared immediately. You can send the digital file to a colleague across the country or across the world to be able to share that information or to be able to compare what has been found there. So those are some of the ways that we do images and CCDs are the primary one now. The other astronomical instrument that we want to look at here is the spectroscope. Now spectra are very important because these are the ways we split up light into its component colors. They are the way that we can figure out things like the speeds, how fast things are moving or what things are made up of or what their temperatures are out in space because we can only see that light from them. So we use what was called a spectroscope to split the light into its component colors and wavelengths. So what happens here is the light comes through a slit and then goes through a prism or we call a diffraction grating and that is bent by different amounts. So the blue light will end up over here and the red light will end up over here. The blue light being bent more. The red light being bent less. It's going to spread the light out into the colors of the spectrum. So different wavelengths being bent by different amounts. We can then put a detector here which could have been a photographic plate long ago or would be a CCD now and that can be analyzed. This is very important because it can tell us about the motion of an object, what it's made up of, what its temperature is, and much more. This is really how we learn a lot of the details. We can see pictures of objects and photographic plates and CCDs can give us very nice pictures, but the spectroscope is really where we learn about the details of those astronomical objects. So let's finish up here with a summary of what we've gone over today. We have astronomical detectors that are used to record images, make a permanent record of things that are seen through the telescope. We had early ones using the eye and just drawing objects which of course were very subjective. The more modern ones like the photographic plate and the CCD were much less subjective. CCD, Earth Charge Couple Device is the primary one that is used now and it's a way to record images and spectra. And the idea is that now these digital images can be very easily and quickly shared with astronomers around the world. So if you need to share something with a colleague who is not right with you, you can immediately do that and get feedback and maybe be able to make adjustments for future observations. So that concludes our lecture on astronomical instrumentation. We'll be back again next time for another topic in astronomy. So until then, have a great day everyone and I will see you in class.


secular humanism is a variant of liberalism. All of the values that you claim as a secular humanist that you cited in your opening statement were also the values that were cited as the justification for the invasion of Iraq, sanctions of many Muslim countries around the world, the invasion of Afghanistan. Those secular values were cited as the justification. That's why they call it Operation Iraqi Freedom. That's not a coincidence. Now you want to wash your hands of that very conveniently. That's fine. I'm not saying you personally supported those wars. My argument is that your ideology was the basis as a justification for those wars in that invasion.  Yes, they are. You literally went to war. Like you're the last person. Come on, man.


Today, I'm going to a lab which is being upgraded into a state-of-the-art testing lab for genetically modified organisms. Let's go to the lab. I'm at the Biotechnology Unit of the Industrial Technology Institute. In fact, there are two other labs in Sri Lanka that are being upgraded simultaneously. One is at the National Plant Quarantine Services and the other one is at the Agricultural Biotechnology Center in the University of Paradev. These labs are being upgraded by the ongoing National BioSafe Project, which is implemented by the Food and Agriculture Organization of the United Nations, FAO, and with the Ministry of Environment with the funding from the Global Environment Facility. With these labs, Sri Lanka will have the capacity to conduct regulatory testing for genetically modified organisms. This is one of the equipment that the project has provided to these labs. It's called real-time PCR instrument. This machine can make many copies of a specific sequence of DNA from a biological sample like a seed or a leaf, and you can see that as it happens. After about one and a half hours, the results are ready. If you get a curve like this, it proves that the specific sequence of DNA that you are looking for is present in the sample. If that sequence represents a certain genetic modification, that means the sample is positive for that genetic modification. If you want to find out if a certain genetic modification is approved by the authorities of Sri Lanka, you can go to Sri Lanka BioSafety Curing House website, which is also an output of the National BioSafety Project. This is ultimately for your safety.


Okay, let's start it. Good afternoon. Let's start our presentation. Building a Cloud Integrative Application through Knative and Apache Camoclate. I'd like to give you a brief introduction. My name is Dawei Liangming, Zhang. I'm from the open source center of Huawei. I've been involved in different kind of Apache projects for a long time. Well, actually I've been in this area for a long time, so I am the Apache member. Before I joined Huawei, I was involved in the Apache Camo development. Currently, there are a lot of new things in Apache. And that's why I also invested a lot of time in the Apache program. And today, I would like to share with you a lot about Apache and the Camoclate. My name is Zhang Mengchen. I'm also from Huawei. Before I was involved in the architecture of the past, but in the past for one year. And I also involved in the architecture in the iPads and the iPads and the iPads. Today, I would like to share with you that the difficulties and the challenges when we carry out the smart park and how to be used the Apache Camo to solve the problems we met. Later, I wanted to use the Camo K, the Kinect to run a Camo application demo to go through the whole process. So this is the agenda of our presentation today. Just now, I just told you that in the past five, I was involved in the integration of the iPads and the iPads. And I visited the clients very often. So this is how it looks in the smart park. We are kind of the machines. And in each mart, there is a management system just like in style. And then we'll just scan our card and then go into the park. It looks really simple. Yeah, but it's really efficient as well. But let's imagine that if we can all this kind of visitor system, the textile system and the car system can be integrated together to the AI, whether we can have any new applications or not in the smart park. And we also mentioned something like scan your face and then you can be authorized. And in this way, the camera and the title, they are really simple system. But we can have the integration platform to connect the camera data together. And then weird camera recognition to recognize the person. And then in the visitor system, we can see that whether a person can be authorized to go through or not. Or we can also use the system to tell the customer service that your VIP client has already become. We'd like to tell the manager of the TenStyle system to tell them when to open and close the TenStyle. And actually, we have already met a lot of the scenarios like that before. And I'd like to share with you the simple. And after the camera just catch the face of the system. And the information or the message just send to the integration app. And then the face of the person can be recognized. And then in the visitor system, it will be told that whether it is a VIP, whether it is a real visitor, whether it is a frightened one or not. And then it will tell the receptionist that, well, please receive your VIPs from the front desk and then tell the to open or to stop. So this is the solution, detailed solution of the small part. And all this kind of system can be combined to the integration system or the platform. And form a new application, which is called integration app. So how can we achieve the integration app? And here we don't have the TenStyle. So I would like to give you a really simple demo for the TenStyle. It will be replaced by this robot. On this robot, there is a small camera when it catch my face. My face info will be uploaded to the integrated app. And then we'll have the visitor system. We'll have a really simple visitor system for demo. It can be recorded as the person is the VIP or non-VIP. We also have the mark system. It will be connected as well when it is connected. When the VIP or non-VIP visitor is come, I will receive the information of the message via my mobile phone. And we also have the queue, which will ask you some instructions as well. If we would like to open the TenStyle, the queue will be on. And then the TenStyle will be opened. So via this integration app, we can combine all the system together and to generate a new application. So this is what our demonstration is about. Okay, so William, please introduce us. How can we achieve that? Well, Michael Walker is my project manager. And he just assigned me a really interesting project. So after I've received this assignment, how can we achieve that? Now I would like to give you a brief introduction of the integration. Well, actually it is very simple. We just combine the application A and application B together in order to find these two. Maybe these two applications cannot be communicated to each other. We need to process some data. Because we will be the database to do that. The application A and FB will be access to the database. And then they can commute to each other. So it is a really old way for the integration. But for the camel, it is really interesting. And it would have a lot of the abstracts. For example, the abstracts of the DSA. In this way, we can connect the app A and FB. Yes, we'll process some data. We'll do something later in our case. And I will elaborate that in details. And how can we achieve the integrations of the apps used in the smart park? And currently we already have the cloud. So whether we can use all these kind of scenarios in the cloud or not, well actually you can find out the answers later when we introduce you to the camel case. So let's go back to our topic. First, I would like to introduce you to the apache camel. What is that? And it has already been available for over 12 years. And I've been involved in these projects for more than 8 or 9 years. Well actually not continuously. Well for the camel, it is really good for the integration because the kit is really small in the past. When we did the ESB, the camel focused on the process of the message and worked as the router. And it worked really well. And it is the Java-based integration framework. So it is easy to run. And later I would like to give you some concrete cases later as well. And it can also be able to implicate the EIP, which is the enterprise integration pattern so that it can be used in scenarios related to the integration. So when you devise the apps, a lot of the codes are repeated. So if we can abstract these kind of the repeated parts, the lines of the codes will be reduced. Well actually currently you can tell that how many lines of the code I will write can make this kind of the integration available. Well actually you can have your guess in your mind. And later I will tell you the real answer for the camel. It is really active. The community is really active. It provides over 300 components for the camel components. You can understand them in this way. For example, if I would like to integrate it to FTB or the SMS of the Amazon, if we need to communicate with them, all these kind of the complicated, powerful components can be used as well. And actually in the camel, it has less than 10 four components. But it has more over 300 components for maintenance. So if you have different kind of requirements for the application, your requirements can be met because that you can use some camel components available there. And actually this is one of the core reason for me to use the camel to make this integration app. So just now my colleague talked about that a camel has been working on integration for more than 10 years. It is a very powerful tool. And we have this ROMA service. This ROMA service works on different integration of apps. It is powered by Apache Camel. The core of this ROMA is Camel. And it has four features called the ABCV. A is application to application. That means the integration on the cloud and off the cloud. B means our own, the integration of our own app with the partners app. C means cloud. We have this, we know that cloud has, there are private cloud, public cloud, and there are many vendors for public cloud. So C means the cloud integration. And D means device, like the device and IT, how they can be integrated. So the ROMA integration platform works on these four aspects or the four scenarios. There is no much, no many codes required by pulling them and these four ABCV can be combined or integrated. So my colleague explained that for the Camel, it has its own integration pattern. For the programming interface of users, it is realized by this integration pattern here. Here you can see there are about 50 models through these models. The issues, common, the common issues in these scenarios can be adjusted easily. There are some core modules. One is related to information or messaging, like message construction. For example, in terms of messaging, there may be some message may be deployed in different places to enhance the messaging efficiency. Second is the messaging consumption, like through pulling from database. Third is monitoring SDP, like if there is a message from a point and point, we can respond to that. And for message, there is multicast or aggregated approach. For example, when you receive a message, you may need to notify ABCV the three subsystems and these ABC systems will respond to you. And you need to handle their responses and aggregate these responses. And in this case, EIP has mature models to deal with that. And the Camel is a specific reality or realization of EIP. You can choose corresponding DSL. Later, I will give you specific samples. So this is a Camel DSL example. This looks like LEGO. So the EIP is the standard components of LEGO. When we do the integration, we use these standard components and put them together. Then we have this integration or the EIP. LEGO is a good metaphor. When you build a LEGO aircraft model, you use different components. What we do is we develop these basic standard models or components and you can put together these components and make your own model. Now I give you a specific example here. This is a content-based router. So after certain conditions is met, the message can be routed to node A. And if conditions couldn't mess, then the message can be routed to node B. It's similar to the regular code writing here. First, we have from the starting point of the node, we get the message. This is a sort of message and we'll make a judgment whether it is a bug or not. This bug and this message is routed to another queue. When we write the Camel application, we don't need to use a message queue. We can use other things like direct endpoint or SEDA endpoint to do the job. Then in this way, the message queue won't be required. In addition to the Java DSL, it also supports other languages. This is the SML DSL and if you have used other apps, you will notice that you don't need to write a lot of code. You just start the first step, then the SML can load it, the rules. Take EIT as an example. First, we will have a component or a node. This node, let's say like a camera, it will capture the information and on its edge, it has this facial recognition function. Then through this transformation, it will transform this data into data recognizable by the visitor system. Then it will be transferred into EIP component. Then we can send this to the visitor system and the visitor system will respond to it and give feedback. That will evolve our judgment. We need to judge whether it is allowed or not. If it is allowed, whether it is VIP or non-VIP, then this information will be sent back to the notification system on the top right. This component is transferred into a data format that is recognized by these Cosmo blocks. Through the process, it is built by these seven blocks. These seven blocks are the core modules in this camera. This is the concept for this structure. Now we can take a look at a specific code. It involves 20 codes. I think we can reduce some codes. Like a header. All the codes are published. You can download it. The first two lines are a disclaimer about the RESTful endpoint. Cosmo can communicate with the route rules. There is a service call. That would be our visitor system. The visitor system will check in the visitors. We will get the information from the visitor system because we use the gs and pass to process the data. We can get the visitor's name. Then the information will be transmitted to the next node. Regarding the notification service, it is also easy. We add one DSL. This DSL will make judgments. We will judge the name of the visitor. If the visitor is X, we will add VIP in front of it. With this VIP header, this information can be transmitted to the next level. The notification will be sent back to Cosmo. It is a link or a glue that connects three systems. The endpoint can have communication with remote services. There are only 20 lines of code. After I finish these 20 lines, it can run or not. It is still involved in other work. We need to generate relevant files. You can go to the GitHub to check the information. In the interest of time, I will skip that. I will run a demo. We also need to define the camel and the component. If we want to run it on Kubernetes, we also need to add the executable procedure and push it to the server. Push it to the image server, and then the image server will run it. If there is no major change to the route rules, then we can do some dynamic run. I will explain later. I have been working on camel for quite a long time. It is fair to say that I have witnessed the involvement of camel. I found that a lot of people have introduced the new elements to camel for the SOA in the past. It was based on ESB to deal with message. Camel was a route engine based on this. Now, we see some typical scenarios which provide basic service. Based on this basic service, we can provide combinations of services, like in our case, the notification system, visitor system, and the combined system to provide this notification and visitor system. We also have the microservice architecture, but it also involves a lot of manpower in order to run it. Therefore, later, now we can leverage Kubernetes, whether it is a service mesh, which can help us to block the network issues. We can also leverage Kubernetes resource scheduling to drive the routing routes. That's why we use Camel to do the service. Speaking of this, I want to talk about Camel K. Camel K is Kubernetes based. Then we run the Camel application natively on the Kubernetes, and we also provide a light oise integration platform via the Camel K. The route policies can be deployed to the Kubernetes cluster. Later, I want to tell you how this one can be achieved in details. It also leveraged the upgraded SDK. It can also lead to the achievements of the CRK. The presentation yesterday and today we already covered these parts, and we won't talk about that in details, but we will give you a really concrete case. Camel K builds the application on top of the Kubernetes and I would like to give you some detailed explanation later. I'll just tell you there are 20 lines of the code, and we need to have to do the same rules. We need to add it and then for outsourcing, and we need to generate and register a mirror to deploy it in the Kubernetes, and we need to use the orchestrate kit on the Kubernetes and to make it a project which can be running. So there are a lot of things we need to do behind the 20 lines of the code, but how can we do that easily and fastly? If we pay attention only the 20 lines of the code, well actually that is the job of the Camel K. What does it do? The 20 lines of the code will transfer to the CRD. The resources will be defined as a CRD and finally they only use the one-kit or one-tool to convert that to an object of the CR on the Kubernetes, and it will have the operator. The operator will be the Kubernetes controller. It is for the DSL controller, and the controller will complete its job. For example, it will choose the mirror for the compiling, and after compiling it will generate a project, and the main dependencies will also be included in this framework as well. And here I just tell you that there are several languages you can use to develop the DRL. It can be the XML, it can be other languages such as a Grumi or other languages. So you can use various languages to do this, and then all these types of languages can be recognized. And after you've done this part, the mirror will be built, and after the mirror is built, it will deploy to the entire Kubernetes environment. So will it do it for us, which we have to do manually? Well, it needs to use the command of the Kubernetes to create the DSL 20 lines code or 20 lines of the objectives. So it will do everything for you, and finally what we get is the integrated app. And this is how the CRD looks in general. You can see that you add this standard Kubernetes thing, for example, version, remain data, and the specs. The most important part of the spec is the last one, and it is the 20 lines DSL documents that we created. And finally, all the things we have to do manually in the past can be automated, and then we just submit it and then generate it. In the DSL will be changed very often, right? So every time I change the SDL, they will run in the backstage for us. The speed is really fast so that it can speed up application and integration efficiency and productivity. And this is a simple introduction of the operator SDK. And if you are interested in my look at it, and if you need to define CRD for yourself, I think that it is quite complicated. So what we need to do is to define and describe the structure properly, and then if we use the functions of the operator SDK, it will write code for you. So what we need to do is to write code for a controller. So I think that the jobs of the deployment is really simple. So if you are interested, you can have a look at the code of the Camo K. And now I would like to give you a brief demo of our environment. So this is the demo, which is the recorder of our screen. But if we still have some time left, I would like to give you a live demo. And this is the Kubernetes environment we have already deployed. And this screen shows that we already deployed the Camo K operator to the Kubernetes environment and it is running on the Kubernetes. And this one, the router, we need to deploy it as well and it will run a Camo K instruction. And then the deployment, completion and operation will be done automatically. And in this way we can start it. So what we create is the user SDK object. And after this one is created, the operator will do everything for you. You can see that the operator has already built the router and has already deployed the router. And in here we need to forward and then we can convert our requirements or convert it to the Kubernetes. And you can see that in mixtage, there are two services has already been recorded. The first one is the visitor service, which has already been started in backstage. The purpose is to deal with the application of the visiting by the guests or the visitors. And this is the modification services. And if you are interested, you can connect it to it via your mobile phone. It has already been deployed on the public network and if you are interested, you can try it. And this is a one based on the web socket so that you can get the information. You can see it has already been started. Well, the application of the Cosmo has already been initiated. The notification has already been sent to the mobile phone of the receptionist. Well, actually another visitor is approaching. Well, for different users, you will receive different types of the message or notifications. You can see that another visitor is coming. Well, this one is an VIP visitor. Yes, she is an VIP. Okay, so this is the end of the demo. Due to the time limitation, I will go through these parts really quick. And connect it has already been mentioned for several times and I don't go through that very detail. For the connectives, we don't use the bill. We only use the serving and the eventing. And the eventing of the connective enables us to initiate the router so that the standard loading can be done automatically. And I just mentioned that I can deploy to the sensor to the cloud in the backstage and it will be packed and turn that into the mirror automatically. But currently we miss the time. We don't have the time. We don't know when we can pull it. But with the service of the connectives, we can pull it really conveniently. And another one is the auto-scaling of the connective. When you don't have any request, it can be downscaled. So the service instance can be turned into zero. So in this way, you can reduce the usage of the zero. So it is really useful in the IOT because in the IOP, the frequency is really low. Such as the door or your home. You need to open the door very often. You open and close the door but there is a really short time. So if you don't have this kind of a scale to zero function, you just keep using the resources in kind of ways. And it is also really helpful to write the router code just when we did. And I don't know the rest of you have already used the windows code before. I don't know whether you did it before. That was a long time ago, maybe 10 years. And that time you just press the button and then we just did the corresponding process and it's done. So with the connective, we can do with that really conveniently. And the common router standard, we can also do that via the corresponding kit, which provided by the Camo K. Camo also provides a connective event. So it can be connected to the connective service on a Kubernetes. So that your application can be loaded easily on a Kubernetes. And the modules we just mentioned can be separated. According to the requirements, request of the business, we can call all these modules according to the scenarios. Well, actually due to the time limitation we cannot talk too much. And if you are interested, you can scan the QR code right-hand side. It is the website of the Camo K. And on the left-hand side, it is the chatting group of the Camo group. And for the request or the call, you are welcome to join us. Actually, all this kind of call has already been available. It is written by the Python language. It is very simple and so much from us. And thank you very much for your time. Thank you for your questions from the forum. And if you have any questions, we are welcome to talk to you privately later on now. And if you don't have any questions, well, you're welcome to scan the QR code and join our chatting group. Okay, thank you very much for your time. Thank you.


All right, welcome, everyone. It's June 2nd, 2023, the start of phase one. This is GitLab plug-in modernization. So topics we had, a previous action item, harsh, creating a unified modeling language diagram of the webhook with help from Fram. Chris, to check if the Git have action added by Basel is working as expected. Chris, I think that one's done. Yeah. Yeah, as far as I could tell it's been done. And then harsh create a snapshot of version six dot acts to publish an artifact or harsh you want to report on either of those two action items. Like the, the UML diagram thing we had, I had a meeting with Fram and we decided on some things and I was, I was going to work on it but then the review got messy and like the PR got messy and I am totally focused on that right now. Like, I'm going to shift it next next week and regarding the snapshot version. It's also going to be next week like my focus is going to be that PR as soon as soon as it gets merged, then I'll start working on the webhook thing. We will discuss about that and that review that Basel did. That was a great review. That was an eye opener. Great. Thank you. Well, and I like, I like the focus on the code. Good for you. That's, that's, that's good choice. All right, so, so then do we want to put an agenda topic that is discussion on the, on the review and its results. Okay, are there any specific topics that are on your mind, harsh in terms of, hey, I'd like to ask about this or ask about that. Yeah, related to the auto detection thing like Basel said to keep it like keep the thing alive, like, and I don't have any problem with that but I was trying to understand the auto detection things. I had some questions related to it like why are we iterating to all the API versions when we know that if the user is not using like the user is not specifying whether to use version three or version four, then we can already use the version for the user like why are we iterating to all the API versions and then checking if it's working or not like isn't it useless kind of feature. The reason that it's iterating is if you're using a very old version of GitLab that does not support the newer API is designed so that you could use that older version without having to explicitly configure Jenkins to talk to it with an older API. So, I think, let me give you a specific example for GitLab before it was, I'm just looking up the API history. Yeah, so the, the GitLab API v3 was introduced sometime around 2017. And, okay, I can't I can't find the version that was introduced in but or the version that v4 was introduced in but the idea was at some point in time. There would have been a GitLab release that only supported v3 API and not the v4 API. It would have been an old version at that time, but not old enough that we wouldn't want Jenkins users to be using it. That we wouldn't want to support Jenkins users who are using it. And so in that case, that's what this auto detection feature is designed for us because without the auto detection. If we tried to connect using the latest API version that we know how to speak that might be too new for an older GitLab server. So the idea was that it would, it would gracefully fall back to an older API version until it found one that both sides can speak. I mean this is the same kind of auto negotiation that Ethernet does, like when you plug in an Ethernet cable. It tries to, like I have 100, I have a gigabit Ethernet switch, and you know if you plug in, you know, if you plug in an Ethernet cable, it'll do this auto negotiation where it attempts to determine what speed both sides of the Ethernet connection can communicate at and chooses the lowest common denominator. So this is the same exact type of protocol here. And that would be useful in the future if they introduced API version five. So you'd imagine that there would be still a lot of GitLab servers that only can speak version four. So that's, that's kind of why I think we should keep this feature because, and I did look up whether they were ever going to have a version five and I did see some discussion about it, although it doesn't seem to be released yet. But it's, yeah, it seems like they are potentially going to have a version five in the future. Yeah, so the whole crux is Jenkins and GitLab both should support like the Jenkins instance and the GitLab instance used by the users, both should support the version, the API version that we are trying to use. And that's why we are iterating through all the API versions and seeing if both of them match. Yeah, yeah, if we're, yeah, if we try to talk to the server using the language that's too new for it to speak, you know, it'll just reject the request, and that that auto detection codes just looping around until it finds an acceptable version. Okay, now, the next question that I had was for the ordinal thing. So, like I saw that the client builders were already sorted and the ordinal what the ordinal thing was trying to do was, it was trying to see whether the ordinal values are different or not, and also trying to compare the client builder IDs so I couldn't really understand because the ordinal values are always going to be different like for version, like for auto detection it's going to be zero for for version three and version four it's going to be one and two respectively. Because they are always, the ordinal value is always have a difference like if the difference is non zero, then it will own, it will only compare on the basis of IDs like version three or version four. So it's never going to use the ordinal thing. I couldn't really understand what was that for. Yeah, I mean I, I don't, I don't know how good the original code was but what I, what I imagine the intention was is to be able to simply sort out the list in some kind of order, because it implements some kind of. Yeah, it is already sorted actually the client builders builders are already sorted, and the ordinal was used as a another layer to sort it more for some reason I don't know. They were trying to compare like if the two client builders are there with the same ID. Like, no with the same ordinal value then the IDs will be compared, but it cannot, it is not possible right we cannot have same ordinal value they will always have some difference. It may very well be overly complicated and or useless I wouldn't be surprised if the original code had some flaws like that, but I haven't looked at it very closely. Anyway, if you, if you think that it could be simplified that seems fine to me. Can I remove that because I don't really find any use case for that. I guess I mean if it really is. Yeah, if it really is over if it really is pointless then, then sure. I haven't, like I said I haven't looked at it too closely but yeah in general if there's, if there's no reason to keep something then then it's fine to remove it. And then I'll, then I make the PR then I'll write it on in the common section so that you can see through it maybe I miss something or something like that, that shouldn't happen. But still, like so yeah, the next thing is, what was that to build the GitLab API, like I what what I was trying to do when I removed the version three was I was trying to create the GitLab API instance in the itself, but now as we need the version three and version four, like some notion of the version three and version four in the code. So what I will be doing is I'll be using the client builders, like in the auto detection client builder what they did was they built the client using the client that was already the client was created in the GitLab plugin code base but now we will be using the GitLab API. So what I will do is I will build the client using the GitLab API in the client builder itself, and the client will because we have the URL and the token in the client in the client builders. So is that a is that a correct approach according to you because I didn't really find anything flawed with it. Yeah, that's fine. Yeah, I mean this is just details. It's just implementation details but if you want to make it really elegant and keep the diff small, you could use the same class name as before like the whatever it was called the auto detecting client builder but you know instead of implementing that old interface that we don't need to implement anymore. It could just be yeah it could just be like a plain old Java class that returns the objects of the GitLab API objects that we need. So, no it has to extend the GitLab builder client because we need to build the client right so it has to be extending that but yeah we don't need to implement those proxies and stuff like that. Right that's right that's right. I think you're on the right track. Yeah, I'm almost but I'm still like, I got underconfident after that PR I wanted to check everything that everything should be fine before I make the PR I don't want to mess up. I don't have to waste my time. No, it's okay. No, I think you're on the right track. I actually wrote the code for it like I actually completed the code for keeping the version three intact and I was interactively testing it but my GitLab got top so maybe I can screen share and discuss the code with you before I make the PR so that it doesn't get messy again. Okay. Sure, let me I'll stop screen sharing and you can start. Oh, system settings and what just wait a minute guys. Oh, I have to quit and reopen zoom so I'll be joining the meeting again. Well, welcome to Mac OS. Oh, you should see how bad Linux is for any of this kind of stuff. Oh, is it is it bad as well I haven't I haven't run. I can't even use my, my Jabra headset with Firefox at all. But it works fine and zoom. So that's one of those dark places where user interface devices are on on on the various operating systems what a black hole I don't envy Microsoft or Apple or anybody who has to deal with. Oh, it's Bluetooth, except it's not quite Bluetooth or it's it's almost Bluetooth does that count. And one of the developers at Oracle and Twitter about maintaining Solaris for new hardware. He said luckily it's a lot easier to keep up with server hardware than it is with desktop hardware. I don't know I've got, I've got a son in law who does controller chips for disk drives and his world. Yeah. Wow. That's already great. Super harsh let's see. Oh, is it visible. Yes it is. Yep. So let me explain what what I have to do, like the best you said about the cost data thing like where is my beautiful review that I got. Yeah this exported thing you were having doubted at this isn't just a temporary change that I'm doing like the merge request thing that I did. This is very much temporary. Where is my course. Yeah, related to removal of this thing. Like it's a temporary thing that I'm doing when I'll be implementing the webhook thing then I'll be separating out the cause data according to the events and then I'll make sure that this thing is inside the merge request events cause data. This is just temporary just to make the plug in work and we have to and just to make sure that the step by step migration is taking place correctly. So I don't think so there is much of a problem here. That sounds fine. In that case would be in that case, why don't we comment it out and put it to do that says this needs to be commented. The plugin will not compile right. Well what I mean is. Oh, oh sorry. Is our in order in order is the temporary code the deletion of this or the addition of it. Like it's deletion of this. Right, right. So, since, since we're deleting something that we that we want to eventually keep in the finished product, what my idea was is that instead of deleting it from the diff, where we could, you know, easily forget about it. We could comment it out instead. And that way it won't, it won't be considered part of the source code. And in that comma we could also write it to do that's something like, you know, figure out how to retain this in the future. Yeah, and the only reason great idea, the only reason for doing that is so that we don't forget about it. And also for, for other people who are reading this to understand more clearly that this is only be removed temporarily, rather than permanently. So I'll write the comment about this, explaining this in the thing, and they are sorry about not explaining it it was it was just a draft PR that's why I did that, like I was not expecting it. Sorry for that you have. The idea is we do want this to get merged into the project branch once, you know, because like, this is incremental progress towards getting the project lead it so that I mean that's why I, that's why I lowered the requirements for the project branch to reduce. You know having to compile the tests having to run the tests. The idea would be to get a clean build of this. And, you know, actually merge it merge the pull request into the project branch so that we can, you know, have some stable foundation that you can then build on top of and future changes. I'm not going to do anything with the draft we are like I'm going to make other PR and smaller PR, so that the review process gets easier. And I'll go and I'm going to close the PR the draft we are that I made after the things are migrated and stable. I mean once, once they once these pull requests that target the project branch are merged into the project branch, you'll be able to file additional pull requests that build on top of them. And, you know, we, you know, that way you can kind of work at your own pace implementing pieces of this one at a time and filing your requests for review that are a lot more focused. That was the whole idea of having a project branch in the first place. And, you know, we can look at the overall state of progress by comparing the project branch to the main branch. And the idea is eventually, there's going to be no more to do comments left. You know, right now there's, there's at least the to do comment that I added which is, you know, re enable the tests. So that's, that's an example of a to do comment that we wouldn't. be able to merge this project branch back into the main branch as long as that to do comment was unaddressed. Simply because we would never accept to have the main branch not do any testing. So it's the same, you know, the same idea all of these to do comments. It's okay to put them into the project branch, because this is a whole work in process, but we know that we're done with the project and ready to integrate the project into the main branch once there's no more to do comments left. Understood. So, no, in the good luck connection like, as you said, I am completely keeping the auditing good luck planning, as it is no changes at all, like I'm not even changing the name, like they're the same. The connection thing is not having much changes now. Now the main meat lies in the implementation. Now what I did was in the auto written get left client builder. I built the GitLab API instance directly in the build client by setting the ignore certificate and whatnot. And this, this will be returning me directly like when the user is going to select the auto detect ID. And the ordinal is also kept as it is and it's, and it's extending the GitLab client builder. Again, the version three and the version four also is doing the same thing it's also extending the GitLab client builder. And it is returning the client. I'll, I'll show you, like, I'll debug it also life, like, so that we don't have any doubt related to this. And regarding the GitLab client builder, it does not really have much change, like I was talking about this ordinal thing, like, you see, the, it's comparing like it cannot be zero because it's either zero either one or either two. So it will never be zero. When it's never, when it's never zero, then it's always returning me the difference. And I don't think it's useful at all. Like it's never comparing the IDs at all. It's only returning me the difference. Yeah, it's, it's, it's, I need to drink my cup of coffee before I can reason about Java ordinal calculations, because I always have to look up what the, you know, what the positive and negative numbers mean and that API but I'll check it over and see, see if I agree with your evaluation of it. Like, rest of this looks really good though what you just showed me in the last few files was looking really good. Like you, you can see here it's already sorting the builders according to the IDs that it's just comparing. So, I don't know. Let's see, maybe I'm missing something. I've got a question though is like, can we, can we change it from not zero to greater than one. Like, can you agree? Greater than or equal to one. So for not not zero, that's from the condition. It's actually the same like if the difference. It's like, it's kind of like, but do you think you want greater than one or equal to one. Okay. I don't think so. So, isn't the comp, as Basel said, isn't the compare to interface positives and negatives that not equals zero matters a bunch because it's, it's saying are they exactly the same is ordinal exactly equal to other dot ordinal. If you right click on compare to and go to go to the API docs for it if you click on right click on compare to and then select. I don't know if it's right click. Yeah, there you go. If you go, if you go back to that context menu and good and say go to super implementation. I think. Yeah. Yeah, there's a Java doc for it and few scroll up and read this. Yeah it's like, every time I look at this I have to read this Java doc again because it's really not very intuitive. It's like a one mathematics you know like this is not I was actually, I was actually talking to one of the Google developers on Twitter and he was complaining about this. And this is someone who's like written the guava library, he was complaining about this interface being, you know, clumsy to end to, you know, to remember which positives and negatives mean which mean which semantics so this is definitely something that a lot of people get confused about. It's normal but like, let me clear it all at once like what this method is trying to do is it gets all the client builders and tries to see if the ID is like version three or version four equals to the client that it that it has seen, and it is the provider, and we simply use the provider. So, it's just, I don't know where this thing is even used this ordinal thing is. It's not used anywhere. So, like, we'll, we'll see it afterwards. Other things, these are the simple things like I can answer this, I can answer this question with certainty in a day or two once I have some more time to read the, I don't think I can read it quickly enough in this meeting to come to any valuable conclusion.  That's why I was doing that. No, no. Yeah, we are using the client builder to build the client right to build the get library instant. That's the only place I was using it though. I did a quick check. Like, if you find something that you can ping me on the get a channel. Rest easy get live. No, we are, we are actually removing that was existing was in existing. Yeah, but we won't use cases for it. I don't think it is used in here. Like, I read it all and there's the proxy thing. 8080184 if you go back to the current main branch. Is it. Yeah, it's there. But it's like, no, no, no, you're actually not getting right. Like he, he used the ordinal thing, but it's still not be used in the implementation like it's good. It's getting into it's super and it's super will be get left client builder, and they get left client builder but get the ordinal but it but it will not do anything with the ordinal thing. That's what I was showing you, it's not doing anything with it. Yeah, but it seems like the intention was to use it in that compare to method which is used when sorting the builders. So, but it seems like your, your observation is that is that the compare to is not implemented in a way that uses the ordinal correctly. Yeah, that's something that I have to verify. Okay, okay, so let's move on to other things like the time is getting over. Yeah, I discussed it all. Attribute points. Yeah, so the get a merge request things like let me show you the, the mud the get a merge request that I removed from the cost data is here like it was used specifically. I added the code for it in the classes that use it specifically so that we don't require that at that point of time. And related to other changes. I don't think so there are any other major changes that I did. All seems to be working fine for me at least like I had one other blocker, but anything else that you would like to see like I don't think so I have anything else. Everything else seems to be working fine for me. No, this looks good so far.  Sorry, are you testing this against a Docker image of get lab locally. So how you're making these connections image. Nice. And harsh. I had the, yeah. No, go ahead. I'll, when you're when you finish, I'll, I've got another question about your testing also. Yeah, please go ahead. Yeah, so I go ahead. No, no, please. I'll let you finish you. I am going to distract you if I if I go along the path I was going so you finish and then I'll like I do interactive testing using the Docker images first, and then the production thing like the actual get lab server like for faster testing I use the get lab server. And if some if I have to test the version three or something then I'll use the Docker instance as well like, I think the version for was implemented from get lab version 13 or something, and I'm not sure yet. But yeah. Yeah, go ahead Mark. What's the problem. So, one of the things that I'll want to be able to do is do similar kinds of testing to what you're doing.  And if you don't do you objective I create those kind of things and put them someplace where I can share them. I, I find that no problem I, I didn't really think about this. So it could be a really great idea actually. Yeah, well I think you're probably just starting with clicking on that test connection button on the settings page, I would imagine because that's the most basic test. Is that is that we have that is that we started with her. Yeah, it almost always works like whenever I make it migrate things start working quite well, like, I'm not that bad at migration actually it works. Nice. So that's, that's a good first step. But yeah like what Marcus, as Mark was saying, once, once we have a connection, the testing shifts from, you know, being able to connect at all to making sure that each of these end points was migrated correctly with the correct semantics and the, the best way to test those is, is with an actual Jenkins job, because, you know, the unit tests will cover a lot of it. In a, in a sort of mock environment with the server returning the pre packaged data. But there's really not no substitute for for end to end testing, especially of the very common, common end points, you know things like, you know, triggering a build when when the floor quest gets updated these are like really common use cases that we would want to test using real Jenkins job, you know pipeline job or a freestyle job for example. I, I, I have tested it using the freestyle job, like the plugin that I'm using, I already migrated it, and the version three and version four both are there. So I'm showing you to like debugging it right now. And because I faced one of the blockers related to the, what was that called socket connection time out I guess. Yeah, like, so I'll be showing you. Yeah, so I selected the auto detection, I guess, yeah, that's why it is building the client using the auto detect ID. So I'll just step over all these things like this just to show that it's working. It's not like something problematic it's working like it just returns the client successfully and as the client was not already the client ID was not already present in the client case. So it just puts it in and returns the client client ID, it returns the connection map. Yeah, yeah, yeah, yeah, that's where the problem is, like it gets the client for me. That's perfect point. Yeah, this is looking great. I mean, this is looking, you know, basically just what I was hoping for from after the last review that I did so I think you've done a great job. No, it's, it's not that great actually like, let me show you what's the problem here. Now, when I come here, here comes the real problem. It's going to give me a GitLab API exception for some reason which I'm not able to understand, like, I should not get it. Just wait a minute. No, this is because attaching the debugger makes everything run more slowly. Right. Yeah, so yeah, it just hit there and it said me socket connection timeout with the connection timeout, timed out, which I completely understand how can the connection timeout. I'm not able to find any fork that I did in my migration, like everything is working really fine like there is no problem if I stop the debugger and just do the normal things that any user would do everything will be fine. So the way the way that I would debug this is what what what your code is doing is making a an HTTP request to a server. And when you're getting this socket timeout exception. It means that, I mean, I'd have to look, can you show me the whole stack trace, but what I would assume. If you expand the E in the debugger, I should be able to see it. Yeah, there we go. Can you expand the back trace. Oh, is about middle of the block. Yeah, there you go. Actually, that's, that's not what it is. Okay, I can't read that because it's all maybe maybe stack trace. Yeah, stack trace. That's what it meant. Okay, so towards the bottom of that. Whoops. Nope, you were in the in that in that expansion that you're in harsh stack trace the third from the bottom. Try that one. Okay, I heard back trace. You know, you heard me correctly, I just was thinking if they're on now can you make that wider so that I can see the whole thing. Yeah, so yes, it's kind of what I was kind of what I was thinking, what's the, what's at the bottom of this. It should be or actually, no, that's the top of this. Okay, here we go. Yeah, this is kind of what I was thinking so it's just, it's just not able to, it's, it's, if you navigate to element zero, you should see what. Yeah, if you click on the navigate button you'll see what's what's where this is actually going on. This doesn't, there's a navigate link I think right at the top. At the very right hand side, like next to line 700 word, navigate. Yeah, that's a few if you see that you're actually you haven't highlighted but if you look at the highlighted line on the very right hand side of it there's a navigate button. No, no, the highlighted stack trace line with the butter. Navigate. See the line navigate down down down down down. Stop. Back up. Yeah, you're now over the word navigate. Yeah, so click on that. Yeah, if you click on that it'll take you. So, you know, so you can actually, you know, put break points in here and get, get more, more detailed but I don't need to see more I can already see what's what's happening so the point is, you know, with the socket time out is that now the the GitLab API attempted to make an outbound TCP connection to the address that you gave it, and it couldn't connect and you would be able to you'd be able to reproduce that outside of Java by simply using the curl command and giving it the same, you know, the same arguments the same URL and, you know, header post and, you know, query parameters and body etc. You should be able to reproduce them with with curl, even outside of Java. This is nothing to do with with Java. This is just a matter of not being able to make an H make not only not not not only not being able to make an HTTP connection but being able to make any TCP connection at all to that address. So, you know that whatever address you gave it.  I don't know exactly how you have your GitLab server running on your, on your machine. It seems like for whatever reason. You can't communicate with it from from from the client. So, you know, just because you can create that GitLab API object that doesn't mean that it actually talked to the server. And that's, and that's actually what the sort of negotiation thing does is that it actually does a really simple request from the server I think it's like get current user like who am I basically. And by doing and so I don't think you're doing that yet, because if you did that it would give you the same error messages you're seeing here. For whatever reason, the, you know, the IP address that you've entered or the hostname that you've entered is not routable from this environment that you're running into the GitLab server, whatever environment that's running in, you know, whether that's a Docker image or virtual machine or otherwise. So, and like I said, you can debug that pretty easily. You don't, you don't even need to debug it inside of Java. You can debug it just by writing a curl command that uses the same address and it should fail with the same time out. And then once you fix the problem, either by setting the hostname correctly or, you know, fixing your, your networking or whatever, then, you know, then it should start working after that. So, so Basel in terms of the debugging technique then if harsh stops the debugger just before it makes the request, he can inspect the content of the request in the debugger and prep the arguments to curl to match that request. Exactly. Okay, I was thinking. Yeah, you might find, you might find that it's something as simple as, you know, is getting the, the, you know, the, the hostname wrong or the IP address wrong or something. Are you, are you trying to connect to, where's the server that you're testing against is this the, the, the GitLab.com hosted server. Yeah, I'm using that currently I'm using that. So if I'm not using. If I'm not using that to that then, then, then it, we would assume that the hosted GitLab service is deployed correctly. So you can't connect to it. The most likely causes are, they are using the wrong address for some reason, or that I think so. But if you pointed that out, I think so because I'm not sure about the URL that I'm using, like it is possible that I, I have to use the base URL, like the host URL instead of the URL that I'm using currently. So, I have to check that, because it, I never really got into this trouble before like, when I, when I remove the version three then I use the base URL instead of the URL that the author has given but but I created the base URL myself without using the URL that is specified in the plugins code base by the author himself so maybe I can do that and it will start working again, but I just wanted to show you like the whole debugging process because like if something could be pointed out like I was doing something wrong or something like that, so that's why I did that.  So, that's a handshake. Okay. Yep. I was going to show you that it was, was like, why is it so slow again, like faster. Yeah, well, part of it at least my experience has been when I'm screen sharing my computer is just generally slower. Right, there's a, there's a real price to be paid, there's a penalty to be paid when for sharing my screen. It should start on. Yeah, that's, that's what I'm like I'm not seeing any failure while I'm doing interactive testing at least with version four. Anything. It should give me a 500. What am I saying, it should not give me a 500. So, so harsh, this site that you're on right now. That's get lab.com right and it's trying to, it's trying to send data to your computer, I would have assumed your computer is blocked by a, what do you call it a NAT device and network attached a network translation device or something that would not allow get lab.com to reach to you but you've got n grok or something else configured to allow it in. Yeah, I, I did that like. Okay, it's in the middle actually. That's okay you don't need to show it to me your answer is great it says okay the the obvious things you've already handled. This is here. Yeah. Yeah, this is it. Okay, thanks. Otherwise it would not have been possible. Okay, I'm getting some creepy errors. Why do I get some creepy errors that I'm doing some live demo. That's bad. It's all right, you don't need to, you don't need to do a live demo to satisfy me. No, nor me nor any of us that's that's no problem. It was working something happening between like I'll check what happened. This is kind of crazy. But yeah, that's fine. Anything else that I needed to discuss like I discussed about the blocker regarding the docs I already already conveyed to Chris. And yeah everything I discussed. I don't think so I need anything else. I'll work upon it and maybe I'll make the PR tomorrow, like I'll try. I have some like, I'll have to test the responses. I don't know where it is. Yeah those the errors that I'm getting regarding the test is because of the responses that have not updated. So I'll have to do it. Otherwise, things are quite great. Like, I don't think so I have any problems. So anything that you would like to discuss more. Now this looks good so far. Yeah, nothing else for me. Meeting went wild. Like, it's already 1015. So, I think it's time to stop. All right, well let's I'll stop the recording then and we'll, it'll be uploaded in probably an hour or two. Thank you.


The Alexander technique is about learning how to move the way the body likes to move. In the Alexander technique lesson you'll learn to notice how you respond to stimuli, how you can let go of those responses that do not serve you.  You go through life with this weird tension pattern where the right shoulder is higher than the left or your brows always furrow because you're thinking about such deep lofty issues. Think Jimmy Carter or George W. Bush. On the other hand you have smooth elegant politicians such as Barack Obama and Ronald Reagan who have much greater command of themselves, they're much more at ease with themselves and therefore it's much easier to listen to them. When you can learn to let go of these interfering tension patterns you're more likely to be at ease with yourself and you're more likely to be at ease with other people. It's a great way to grow personally, psychologically, spiritually and to achieve a higher level of performance athletically or with music or with acting. You can notice what your responses are to stimulus and what your responses are to your mother or to your boss and you can let go of those responses that don't serve you because almost all of the patterns, the kinesthetic habits that we pick up as we go through life, almost all of them set us back, they don't serve us. So when we can get rid of these harmful tension patterns, when we can let go of our unnecessary responses to stimuli by compressing and pulling down on ourselves, we just kind of rise up into life. We become more buoyant, we become more happy, we're better able to relate to ourselves, we're better able to relate to other people.


The development of a rechargeable magnesium battery has been a long-standing goal since the early 21st century. Several research groups have attempted to make progress towards this goal, but there remain significant challenges. The main obstacles include the lack of practical cathodes, suitable electrolyte, and slow reaction kinetics. Recent advances have focused on developing new materials and methods to address these issues. However, more work needs to be done before a commercially viable rechargeable magnesium battery can be realized. This article was authored by Rana Motadi and Fumonori Mizuno.