Chapter 23 of Fuel of Fire, this is a LibriVox recording. All LibriVox recordings are in the public domain. For more information or to volunteer, please visit LibriVox.org. Fuel of Fire by Ellen Thorny-Croft Fowler, Chapter 23. The Professor's Visit. Love, evermore, is fresh and young, so may it please your royal highness to banish from your mother tongue such words as finni. There was great delight all through, steadily, in the neighborhood thereof, when the engagement of Mr. Baxamdale to Ms. Burton was announced. An engagement which one has seen coming on is always so much more flattering to one's self-esteem and therefore more popular in proportion than an engagement which suddenly jumps out upon one and takes one completely by surprise. The former shows us how wise and foreseeing all we onlookers have been, while the latter proves or rather tries to prove that we can see only what is under our own noses and no further through a stone wall than other people, which deduction is, of course, absurd. Although it might be a fine alliance socially for Nancy, it was by no means a brilliant match from a pecuniary point of view, and to this fact Mr. Burton could not close his paternal eyes. But now that Lady Alicia was provided for, Lawrence could justly afford to keep a wife. And, moreover, Nancy's mind was made up to marry him or die, and she had shown such unmistakable signs of actually fulfilling the latter alternative if the former were denied her that her father decided in his own mind that as according to Solomon a living married daughter was better than a dead single one, or was that effect he would not withhold his consent to Nancy's becoming the wife of Lawrence, Max and Dale. As for the two lovers themselves, words could not describe their happiness. It is true that there is no heart sickness harder to bear than that of hope long deferred. But on the other hand, there is no tree of life whereof the fruit is sweeter than that of the long deferred desire at last fulfilled. And now Lawrence and Nancy were enjoying this fruit to the fullest extent of their by no means limited powers. Compensation is one of the great laws of life, and those people whose hearts desires have been given to them at the mere request of their lips have no idea of the ecstasy of bliss vouchsafed to those whose happiness arrives late after having tarried long upon the way. In the sunshine of her restored happiness Nancy soon began to grow strong and well again while Lawrence resolutely put away from him all remembrance of the crime which at once well now wrecked his life and decided that as he had forgiven so much he would forget. Lady Alicia was married very quietly to her old lover in London on the 12th of June. Nancy's wedding was fixed to take place at Tetley Church on the 10th of September. And in the interval it happened that Professor Gottfried, a most distinguished scientist with whom the Arbuthnauts had made friends on their honeymoon, came to stay at the vicarage for a few days. The professor was not one of those clever people whose chins are always in the air. He was one of those men of genius who know that nothing is beneath the notice of man since nothing is beneath the notice of God. So he was immensely interested in everything that was going on around him and having learned much was always longing to learn more. While he was staying at Tetley he heard the story of the burning of Baxendale Hall and the mystery connected with it and his attention was immediately aroused thereby. Over and over again he made Michael and Nora describe to him every detail of the incident with all the evidence that told so strongly against Lawrence until they grew weary of the recital. And then Nora suggested that they should take him up to the ruins of the hall so that he might study the question more minutely upon the very scene of the tragedy. So it came to pass one glorious afternoon in August that the Arbuthnauts, Professor Gottfried Lawrence, Nancy and Nancy's two small brothers, strolled up to examine all that was left at Baxendale Hall. It was a lovely day, just such another day as that which had preceded the catastrophe exactly a year ago, only there was no gale this August as there had been last. One of those perfect summer afternoons when nature seems to be at a standstill simply because there is nothing better to do than she has already done. She is at her wit's end how to find another treat for her already spoiled children. They walked slowly through the lanes, those lanes which were as holy ground, to at least two of the party who considered the others guilty of sacrilege and daring to walk there at all until they reached the park. And then across the velvet grass to the ruins which stood gaunt and grim and blackened, the one inharmonious touch in the idyllic picture of English summertime. Then Lawrence took the professor all over his devastated home, pointing out as fully as he could where the fire broke out and how it traveled. The man of science followed him with absorbing interest. It is most strange, most strange, she kept saying, I cannot at all find it out. It never will be found out now, I expect replied Lawrence, adding under his breath and hope. But professor Gottfried had no such wish. It was his business to solve problems and to make discoveries, and he did not like to be beaten. It must have been set on fire from the inside. He continued, there is no doubt of that, to set a house on fire from the outside and to be in on the upper story is most impossible and not to be believed in thing. Yet the ground floor by the fire quite untouched has been. But why did you not this floor roof over again before everything was spoiled? Because I couldn't afford to do so, said Lawrence simply, ah, but it is a bother, not things to be able to afford. It is, there's no doubt of that, and the master Baxendale laughed somewhat bitterly. And there was no one in the house living, you tell me at the time, even the caretakers had for a short holiday gone away? Was that not so? Yes. And they had all keys into your hands before going given. So did our bot not tell me. That is so. Lawrence hated this endeavor to discover a secret, which his chief desire now was to keep invalid. He had forgiven Nancy with all his heart, but he was by no means sure that the world, if it found out her guilt, would be equally ready to forgive her. And he was quite certain that he did not wish the world ever to have the chance. So he tried to divert the professor's attention. If you will come with me across the lawn to that clump of beech trees, on the other side I will give you a glimpse into five counties, he said. But he required a stronger man than Baxendale to divert the professorial mind, when once it had set itself to the solution of a particular problem. I do not want to see five counties, no, nor fifty counties. I do want the mystery of this house to solve. It's no good trying to do that, Professor. We've all tried and have given it up as a bad job. And you'll be compelled to do the same. What nonsense, you young men do talk and how idle you are. A bad job indeed, whoever heard in mathematics, a bad job. To every question there is an answer if only one can find it. And I mean this one to find out before I go. It's no good, Professor. You better take my advice and give it up. But the professor was not to be balked. He potted about the ruins for another hour with Lawrence at his heels and then was so hot and tired that he was obliged to join the group sitting under the beech trees in partake of a tea which Mrs. Candy had carried up from her cottage in a basket.  Nancy, dear, do you ever wonder what you have done to deserve such happiness? Nancy, sugarhead, no, but I sometimes wonder what Lawrence has. Isn't it funny that food always tastes so much nicer out of doors than it does indoors, remarked that young lady when the meal was well underway. I believe that even boiled mutton or rice pudding would seem regular delicacies in the open air. Food, eaten out of doors, is nice even to read about in books, said Nora. Her sister agreed, yes, isn't it? Now when you read about Robin Hood and people of that sort, taking venison pasties and stoops of claret in the merry greenwood spelled with IE instead of Y, it sounds the most delicious fare, yet I'm certain that claret handed round in stoops, whatever a stoop may be, would taste awfully sour in a modern dining room and as for venison. Well, what's wrong with venison, asked Lawrence with a smile as Nancy paused. He was already unconsciously acquiring the manner peculiar to those men who were blessed with brilliant wives. He led up to her best stories, played up to her smartest repartees, and when she was in full swing his lips moved slightly as do the lips of promptors in amateur theatricals.  You never can catch it at the right moment like a pear or an eclipse, don't you know? It has either not been kept long enough when it is mutton or too tough to eat or else it has been kept too long in which case either it or you has to leave the house at once in favor of the other and then to return to your mutton is dangerous to life from a sanitary point of view. While Nancy was rattling on in her old airy inconsequent fashion with nobody but Lawrence paying much attention to what she said, Professor Gottfried was showing the little boys some grass and flowers through a powerful magnifying glass which he happened to have in his pocket. Suddenly Arthur raised the glass and regarded the surrounding landscape through it. I say, Amby, he cried, do come here and see how funny all the trees and everything looked through this. Ambrose flew to his brother's side and gazed through the glass with one blue eye, puckering up the other until every muscle on that side of his small face was taught. It is awfully queer, he exclaimed, everything looks so big and wobbly, doesn't it? As if the world was full of water, let's pretend we're at the bottom of the sea and the trees are made of seaweed. Let me look, said Nancy, whose finger was not long out of any pie, she could not bear to be outside of things. After she had gazed her fill, which was a very short run, Lawrence took the glass from her, more for the pleasure of touching her fingers it must be admitted than from any desire to behold the phenomenon which it presented and idly raised it to his eyes. It makes me feel like a child again, he remarked after a moment. There used to be a flaw in the nursery window here which magnified things when you look through it and as Ambrose said, made everything wobbly and watery. I likewise remember pretending the world was the bottom of the sea in those days when I looked through that particular pain in the old nursery window. A, what is that? What is that? Cried the professor with suddenly awakened interest. I was only saying that looking through your glass at this view reminded me of looking through my old nursery window as there was a flaw in one of the pains there that magnified everything, replied Lawrence languidly. The professor's almost childish interest in trifles and curiosity regarding the same bored him considerably. Professor Gottfried started to his feet and clapped his hands in an ecstasy of enthusiasm thereby upsetting his tea and bread and butter in one fell crash. I have it, I have it, he cried. The mystery of the fire at last is clear. The never to be solved problem is solved. The bad job is not to be given up any more but is a very good job after all.  Asked the vicar in amazement while the others looked on, imagining that too much learning had made the little German mad. I mean that to me it has been given the great mystery of this house to solve. I mean that I do know how Baxendale Hall was by accident burned. That is what I do mean and the professor fairly skipped with excitement. Lawrence's face turned as white as a sheet. For heaven's sake tell us what you are driving at, he said between his teeth. Listen, pay attention and I will tell you all, cried the professor. See, the thing is quite simple but tell me first, was the nursery to the library at all near. Who is next to it replied Lawrence and on the same floor and for what was it after the hall was shut up, used. As a sort of overflow meeting for the library, Lawrence answered some books and papers for which there wasn't room in the library were stored there. He kept himself well in hand but he could not quite hide the trembling of the fingers that twirled his mustache in a vain show of indifference. Then it is all as Charles play simple, barely shouted professor Gottfried when the sun did shine upon the able to magnify flaw. In the window the flaw did become a fire glass. And so the great son himself did thus to the books and papers in the room set fire, see here. And while they stood breathless with surprise at the professor's discovery he held his magnifying glass where the hot August sunlight could fall upon it and quickly burned a large hole in Mrs. Candy's best tablecloth. Nancy was the first to find words. Then you believe it was the sun that set fire to Baxendale Hall and if so the old prophecy was actually fulfilled for the sun is thrice as great as king or state and a thousand times stronger and higher. I make no doubt dear young lady that it was none other than the great son himself that did the crime commit. Who else could have the library entered without first opening the door and walking up the stairs the fire would in the afternoon begin when the sun at the southwest windows was shining in and for hours it would smolder and then it would into a flame burst and the strong wind would fan it and the books and the papers would like so much tender burn.  Suddenly the professor's jaw fell but stop. I do not see why did the sun that particular afternoon to Baxendale Hall set fire when for a hundred years or more he had been on that very window shining every day. I know cried Nancy the great tree at the back of the hall was blown down by the gay of the day before so that the sun shone for the first time on the nursery window that particular afternoon. Professor Gottfried positively flung his arms round Nancy in his exuberance, that is it. That is it clever, clever girl, that does everything most clearly explain the tree which had always that window shaded did fall. The sun on the floor in the glass did shine. The floor on the window did as the sunglass act and did to the books and papers on which the sunlight fell set fire. The books and papers did so quickly burn that the fire of the house did itself extend. The strong wind did fan the flames so fast that they like wildfire did travel and so in one day and night Baxendale Hall was down burned. Then no one entered the hall that afternoon. It was Lawrence that spoke but the voice was not his own. No one, no one if they had the fire discovered would have been. When you as you told me in the morning of that day here the sun had not on the window shown and the fire had not begun it was when the sun on the west front of the house was shining that the floor in the pane of glass to the hall did set fire and then no one even into the house again did come. And this explains why the fire started from the upper story continued Lawrence in the same unnatural voice it does all things connected with this matter explain replied the professor. It does explain how the fire from inside and upstairs to begin and how it did begin though all the doors were locked for the sun can without any keys enter. Professor Gottfried's words brought full conviction to the minds of all his hearers and the sudden enormous relief was almost more than Lawrence could bear so he turned away in silence and went down into the beach with that fringe the lawns of his old home and struggled to regain that self control over his feelings of which the unexpected joy produced by the professor's discovery had almost robbed him. After a few minutes Nancy left the group that was so busily engaged in discussing professor Gottfried's solution of the Baxendale mystery finding fresh proofs of its truth in every new aspect and consideration and followed her lover into the wood darling she said laying a caressing hand upon his arm which was still trembling I am so glad Lawrence could not speak but he raised a little hand to his lips and covered it with kisses so it came to pass that the mystery of Baxendale Hall was solved at last by the ingenuity of professor Gottfried all the false suspicions and the heart burnings which they had caused were over forever and everybody was hardly ashamed of having suspected everybody else. The professor's discovery made a considerable sensation both socially and scientifically and for a time people were almost as much afraid of magnifying glasses as they were of gunpowder and dynamite. The insurance company was so thoroughly satisfied with the professor's explanation of the otherwise inexplicable mystery that it again expressed its willingness to pay to Mr. Baxendale the sum to which he was entitled and this time he had no option and no desire but to avail himself of his rights and after much consideration and discussion Ian Nancy decided that they would invest 70,000 pounds and live upon the income thereof setting the capital upon the estate and that they would spend the other 30,000 pounds in building a new house upon the old foundations. A house not too large for their present means and yet capable of being added to should further prosperity shine in the future upon the Baxendale family. One sunny afternoon about a fortnight before their marriage Lawrence and Nancy were sitting together upon the old style which had proved such an important stage property in the drama of their lives and they were going over for the 250th time the story of the burning of Baxendale. They had just gone over for the 2000th and 50th time the story of their love for each other and the peculiar unsmoothness of its course so they turned their attention to the fire as a slight diversion before beginning the 2000th and 51st recital of the more interesting narrative.  I dare say I was I often am awfully silly you know it is a way I have but I did mind it confoundedly nevertheless foolish boy as if anybody who had ever had so much as a bird's eye view of you could seriously suspect you of doing anything that Sir Richard Loveless and the Chevalier Bayard hadn't done every day of their lives but they did suspect me my sweetheart and those who have enjoyed considerably more than a bird's eye view of me and example speaks louder than precept you know but they didn't really suspect you they only pretended they did just for the fun of the thing because it's always so interesting to suspect people of doing what you know they couldn't possibly have done half the fun of being good is that it gives such flavor and point to your few lapses while the lapses of habitually faulty people entirely lack this charm. Lawrence stroke Nancy's cheek with his forefinger what shockingly immoral teaching well it's quite true think how glorious it is when mother upsets her tea or father has clared on the tablecloth yet if I or the boys do such a thing there is no real joy in it at all and that is why people pretended that they thought you had set fire to the hall if you'd been less somper and some reproachy that have been no point in even suggesting such a thing my darling said Lawrence after a pause still fondling the cheek which he had made so pale did you ever think I had done it Nancy's blue eyes grew round with amazement I good gracious know I'm not such a goose as all that though I was so foolish as to fall in love with you I've still since enough left not to suspect you of any redeeming fallibility and honesty enough not to pretend that I do let my folly stand out in its true colors having discovered a man who is absolutely perfect I have been idiotic enough to promise to marry him although he never attempted to conceal any of his virtues nor assumed any faults which he was not so fortunate as actually to possess my dearest I've something horrible to confess to you I wonder if you can ever forgive me of course I can I'm silly enough for anything where you are concerned what is it far away Lawrence do down and hit his face and Nancy's lap I know I was a brute a devil you can't be more disgusted with me than I am with myself and if you refuse to marry me after you hear what I'm going to say I cannot blame you my darling I actually believed all the time that it was you who had set fire to the hall more ashamed to me now can you ever bring yourself to forgive me there was a pause then Nancy said slowly you believed that it was me all the time Lawrence grown yes curse my blind folly when did you find out that it wasn't me after all when all Godfried found out how it really had been done not till then no not till then and you asked me to marry you believing that I was the guilty person I couldn't help it I loved you so that I meant to marry you whatever you had done guilty or not guilty you were the only woman in the world for me but I shall never forgive myself for thinking you guilty and I feel I cannot ask you to forgive me oh my darling what a brute I have been to you and although I was so violent to respect you my own innocent angel you were believing in me all the time my sweetheart I am not fit to touch the hem of your garment and poor Lawrence grown once more in the anguish of his soul but Nancy did not grown she laid her hand on her lover's head while her eyes shown like stars my dear I've nothing to forgive you have made me prouder than I ever was in my life before I don't blame you for suspecting me because I'd once suggested that you should burn the hall yourself if you remember though I only said it in fun and then I'd got the keys so there was nothing in that but what makes me so proud and happy is that your love for me was great enough to overcome all obstacles even your suspicion that I had done the thing which you afford oh my darling my darling I know now how much you love me God grant that I may prove myself worthy of such love and Nancy took the bout head into her arms and covered it with passionate kisses a new house stands now on the side of old Baxondale Hall a picturesque red brick house designed after the fashion of the Elizabethans but with every Victorian comfort and convenience and it smiles across the valley at Silver Hampton Church on the opposite hill as its three predecessors smile before it but now there is no shadow on its smile no shadow of a curse as yet unfulfilled into those who have eyes to see and ears to hear the new house and the old church bring the same message the message that good is stronger than evil and therefore is bound to conquer in the end be the warfare never so long in the battle never so bitter to all who possess their souls and patience it is given to see the morning joy which is the sure successor of the night of weeping to behold the marvelous light which must finally disperse all clouds and darkness either here now where there fall other shadows and where fresh clouds return after the rain or else in that fairer country where there is no need of the sun to lighten it and where the winter is over and past forever more so the story of the Baxondales ends well as all stories must inevitably end if we will only wait long enough but the end is not always yet and we are in such a hurry since good is stronger than evil and true then falsehood and blessing then cursing no story can possibly end badly while it is going on badly we know that this is not the end just as we know that the end of anything is only the beginning of something better and always must be as long as God's in his heaven and all's right with the world once more the Baxondales can dwell under their own roof tree until their own lands in peace unhampered by the conviction that again their home will be destroyed by fire and their house left unto them desolate that age long fears over and past the old curse has exhausted itself and the ancient prophecy has been fulfilled to the letter for first by the king and then by the state and thirdly by that which is thrice is great as these and a thousand full stronger and higher as Baxondale and the hall then made fuel of fire the end end of section 23 and a fuel of fire by Ellen Thornycroft Fowler


Hello, and welcome to Conservator's Combating Climate Change, a new podcast series by the American Institute for Conservation's Emerging Conservation Professionals Network. I'm Emma Hartman, and I'm Natalia Swanson, and we're so excited to be hosting this series that we hope will inform, empower, and inspire action in conservation and collections care professionals at every stage of their career. This podcast is generously supported by the Department of Art Conservation at the University of Delaware in honor of Bruno Pouillot, an amazing mentor, educator, and human. We're so grateful to the University of Delaware for the opportunity to celebrate Bruno's legacy and to the entire AIC and ECPN community for supporting us in this new venture. As many tuning in already know, ECPN is a sub-community within AIC that develops content directed specifically towards emerging conservators, and this podcast series is no different, but we do hope that the content that we create here will be of interest to conservators at all stages of their career.  We're so glad that they took this first step, but it can be difficult for the rest of us to know where we should begin, which is why we're creating this podcast, to empower ourselves and each other to recognize agency and to begin taking action. Yeah, so we're going to be building ambition by featuring a diverse group of speakers who are taking action across various sectors of our field. We're going to be talking with our guest speakers about how they're enacting change, and that ranges from forming coalitions to changing daily lab practices to tailoring graduate training to disaster planning and response. Some of our speakers are putting climate justice at the very center of their careers, and then there are others like Natalia and I, who are practicing conservation professionals for whom climate change action is not in our job description, but we'd still like to be doing something about it. Yeah, exactly. This is a really complicated topic that both Emma and I and our guest speakers feel like we could talk about endlessly, but we're not going to. We're beginning with this four-part exploratory series to determine our audience's interest and to see how we can integrate this new platform into AIC and ECPN's already very established digital presence. We're also trying podcasting to increase accessibility to our programming. Transcriptions of these episodes will be available on AIC's YouTube channel via YouTube closed captioning if you have a hearing impairment. This podcast platform will also allow you all to listen to what you're interested in on your own time. We recognize that we are also dealing with a global pandemic crisis on top of the climate crisis at the current moment, and we do want to avoid adding additional stress to what we know is a really stressful time for everybody. Yeah, and a silver lining to this situation that we're in is that both individually and collectively, we've been presented with perhaps what's the greatest opportunity in recent human history for us to define a new version of normal. Yeah, we'd also like to note that our webinar programming is definitely not going away. We're trying something new this season, but we do anticipate that webinars will continue to be a valuable part of ECPN's future programming. Exactly. ECPN and AIC are communities and we want it to feel like one. We are always available to talk to anyone about how you're dealing in this current situation or about how you're processing this content. Yeah, this is also an experiment for ECPN, and while we always value your feedback and your engagement in our programming, because this is a new platform for us and we do want to keep refining it to better support you, your feedback and engagement is especially vital now and throughout this series. Yeah, so our email is in the episode notes as our links to the other branches of AIC, including the emergency and sustainability committees that are addressing the climate crisis in their own capacity. In each episode, we'll also include resources related to the content so you can explore it in more depth on your own time. These episodes will be released in early to mid-May, so make sure to keep an eye on Facebook and our member community for updates from us and from our communications team. Yes, and subscribe on your favorite podcast app. We will be streaming on Apple Podcasts, Spotify, Hear and Anchor. If you subscribe, then you'll be among the first to know when these episodes drop. We are so excited to jump into this conversation with you. We sincerely believe that everyone should be a part of this conversation because everyone's voice matters and it's affecting all of us. Yeah, and just to close out, we want to make sure that everyone's staying safe and well, and we want to wish you all a very happy Earth Day.


Hello everybody. Andrea here. I'm super excited to announce that May is coming and for those of you guys who've been following me for a while, you know that May means a board exam bootcamp is coming back. So I have a full board exam bootcamp for dental assisting students. This is perfect for if you're taking the exam soon and you want to know if you're going to pass. It's that it's that simple. What I do is for two hours I go through mock exam questions on a variety of topics. We talk about the answers. So you have practice with how to pick the best answer. We go through critical thinking questions and case studies questions. This is hard. Okay, this is actually hard work. This is why I call it basically a board exam bootcamp because these aren't easy questions. These aren't simple questions where if you get them right, okay, good for you. These are hard questions where I kind of expect you to get them wrong so that I can talk about them and help you through them so you get them right for the board exam. The board exam isn't easy. So you're probably wondering, well, how do I study for the board exam when I need to know the right questions. This is what you need. These are the right questions, the hard questions, the difficult questions that you need practice with for the board exam. And I go through everything with you for two full hours. Plus, if you have any questions, I'm there to help you. So it's perfect live online for two full hours with me. So you pass the board exam the first time, even if you've taken the board exam before or maybe this is your last attempt, you need to pass the board exam right you don't want to study anymore. So let me help you guys. This is a full board exam boot camp in May for dental assisting students. It's May the 13th at 7pm. If you look at the main website, I do have one for dental hygiene students as well. So sign up now, you guys. Well, it's on sale, and you get full access to everything. So the session recording I post pretty much right away after our live session so you can listen to it, watch it over and over, no problem. Any PowerPoints, you have full access to those. And just keep in mind, if you are a board exam prep Academy member, do not sign up for this because you have the boot camp. You will have free access to that. So this is included if you are a board exam prep Academy member. I mentioned that here. So if you're part of the dental assisting a board exam prep Academy if this looks like you signed up for this do not sign up for the board exam boot camp because you have full access to it. If you guys have any questions, please let me know. Sign up now while it's on sale. It will be going up in price in about a week and a half ish when is May 13th soon so it will actually go up in price next week so please sign up now depending on when you're watching this video and might have already gone up in price a little bit, but get it on sale while you can. Okay, you guys. Thank you so much. And I look forward to seeing everybody very, very soon.


you talk about a data portal as part of the seminar series, the metabolism of cities are viewing. And I think you ought to talk about that. Which better, someone else is presenting while I open this. No, I have a problem. Here we go. So I'll be presenting a system that we've set up recently at metabolism of cities called multiplicity. And before we go there, I'd like to explain to you what metabolism of cities is. I spoke with Don Lee earlier, and he'll describe his group as a hubbub. And I think that very well describes how he started, at least. So our initiative started as a hubbub, as a group of people coming together. Mostly young academics, people doing research on early metabolism who had an interest in doing something more than their research. And our goal really was to, we believe in this concept of urban metabolism having lots of potential and being useful, currently very much an academic sphere, but having lots of potential elsewhere as well. And we would like to spread the word. It's not a very well-known discipline. And we felt the need to collaborate, also because we were located in many different places. And we figured, let's do this through a website in which we publish, for instance, information or publications that are out there. We couldn't advise index. We talk about what research is being undertaken. And we try to help people understand what's happening in this field. So we really worked on creating a hubbub on urban metabolism with very much the philosophy of open source sharing of information behind it. Slowly but steadily, we expanded our group. We are now nine people. We have also expanded the background of people in our group. So the person at the bottom, center, Ramiro, he is a 53-year-old dentist in Argentina who has a very keen interest in urban metabolism. And he threw a mug he has found out about this concept. And we warmly welcomed him to our group. So what we do these days is not restricted to just running some publication index on our website, but we really try to work together and develop different projects that could range from, we've seen earlier, these material exchange platforms. So we're doing something with the government in Brussels to work on that, to writing up research reports together with the global government to organizing series, seminar series like this. So we try to really bring this to a more practical level. And in our approach, we try to become a little bit more professional from our hubby club into a more professional setting. We define what our goal is, which is something we hadn't cleared from the beginning. So we define this as we would like to collaborate on systematic improvement of the sustainability of cities. That more than anything else is what we try to do. Now, we try to do that by creating and sharing urban metabolism knowledge and accelerating its implementation in policy practice. We have debated as well whether or not we want to define our goal around urban metabolism. We said, primarily, we want to collaborate and help improve sustainability of cities. We think that can be done through urban metabolism. But if we move on wrong, we change the methodology. And we really want to go to as much depth as we can to find out if urban metabolism can help with that. Now, how do we do that? We work on creating knowledge, sharing knowledge, applying knowledge, and fostering a community. And we have different ways in which we do that. Now, looking at different research projects and what they find if they look at applying policies and interventions or developing strategies for sustainable resource management, you'll see a pyramid being defined by this mid-future project that highlights different pieces that you need to reach strategy and decision support. Where we work in, you can see here what the different components are, we work very much in the middle of this pyramid. We leave it to others to work on strategy and decision support. We leave it to others to develop the systems that you need. But we want to work with the data that comes out of those systems. We want to work creating models and scenarios, understand the uncertainty, develop visualization, and developing the game. So all of these things, we see our role as facilitators of that process, facilitators of providing, developing visualization, providing information on indicators. In the end, it's cities and it's city government that needs these different tools to affect change. And that's what we believe. And we think that our academic principle can help city government achieve those goals. Now, what are some challenges that we have seen in our work? When it comes to urban metabolism data, which was the lower part of the pyramid, there are already a number of challenges we experience every day. It's incredibly time consuming to find data. It's often very difficult to access. You talk about some PDF report that sits on a website. You can often find data on computers in a lab or at city level that you somehow need to get out of there. It's very scattered. So there's no one central place to go to. And formats are very inconsistent. So those are some problems that we find at that lowest level. Now, we can hardly get to the higher level if we don't solve those problems. So this multiplicity project tries to work on these challenges. So this project that we talk about is very much an online tool that tries to address these issues that we saw earlier. So we try to make available data in a user-friendly, centralized platform. So when you talk about data being inaccessible and scattered, we feel that some of the solutions could be around creating one single place in which you can find all this information. A lot of cities deal with the same challenges around managing this information. And a lot of researchers deal with the problem of finding it.  And we feel that if we can find a solution that suits one city, then we can possibly replicate it in other cities. And of course, we have to adjust to local circumstances. But the good thing is we are a global community. And we can work with people in different cities to find out how do we need to adjust it to a local situation, always working off one single standardized platform. Now, we embrace philosophies around open source and open access. So the idea is very much to make this available to all. And we come from this academic background. So we feel that some of these projects that city practitioners work around may not have the academic rigor that we'd like to see. And we'd like to bring that to planners and to policy makers. At the same time, academics or planners, we can't do it all ourselves. But in society, there are many people who like to contribute to this idea of sustainable cities. So our goal is to bring the energy of those people, of everyday people, who may not have a degree in sustainability, who may not work at city planning, but we'd like to rope them in and rope in their energy to help with this kind of project.  We develop it for one city and we make it available to others. So our platform very much revolves around the idea of presenting all different sectors that relate to material resource use, consumption, flows, stocks. We present those sectors. And bit by bit, we present the sectors in a standardized format that is clearly accessible. And I'll show it just now. We bring information up in a number of different pieces, which can also be accessed through their own section. So first of all, we want to provide general information about the sector. People often know only a particular element of a sector. So if you talk about water, if I'm a resident, I know about water being available or not in my house. That's where it ends. I don't know where it comes from. I don't know where it goes. Similarly to waste. I create waste, I put the bag out and that's it. Even if I'm a professional, I may only deal with one part of the sector. So our goal in this first part of describing a sector is to describe the overall sector in small pieces of text in a way that's very accessible to anybody. I can spend half an hour reading through this and I have a nice holistic understanding of what happens in this sector, in this city. Next, we present a number of data sets. So we try to explain to people, to show people what's available, what data is out there. For all of this, we don't imagine that it's gonna be complete and comprehensive and perfect from the beginning. But we feel like all of this, any information that's out there that we can share, any data that's out there that we can share is more, is better than nothing. So there's a lot of data sitting in different pieces and we'd like to show those different pieces here. In one place, not as a PDF-like download, not as an Excel spreadsheet, but it's on the web. So it's a nicely browsable, viewable, filterable section. And then you'll see a part of an infrastructure. So when we talk about material stocks and flows, there's often infrastructure related to that. And we'd like to index that. And I'll talk about maps. We wanna know where things are. If you talk about flows, you need to understand how do they flow through a city. So this is very much geographic information to better understand and to better imagine. So if people hear that their waste goes to landfill or incinerator, the picture says much more than words. So we want people to browse the map, to check their neighborhood, what's near me, what's impacting my or our city's stocks and flows, and how can I see that? And we wanna bring that closer to people and every stakeholder involved. Finally, documents, academic publications, reports from government, legislation, we try to put it in one place, and then multimedia, photos, videos, et cetera. This gives you a top-level idea. But of course, I'd like to show you what we have. Now let me have a look. First of all, we're gonna look at Cape Town. So in Cape Town, we started populating the system with some information. It's not complete yet, still a lot to do, but it gives you an idea of what we're looking for. So you'll see the dashboard. So this is the section. On our website, it's not called multiplicities, it's called simply cities and under cities. You'll see a number of cities that pop up there for which we have started developing dashboards. Now, you can see here, we define a number of sectors that are all related to resource flows and stocks. And there could be different ones in different cities, and here you see the same overview. Now I'm gonna browse it by going to the waste sector, which is of course what interests today. Good thing that I opened it already in another tab. So first of all, here you see the general description of these different parts of the waste sector in Cape Town. If you come from Beijing, you come from Chicago, you come from India, you have no clue what's happening in Cape Town, but we want to share this information.  So what happens in terms of waste generation in Cape Town? Here you get a couple paragraphs that explain what waste is being generated and how it works in our city. Same for waste collection, how is that done? What waste management facilities are there? So in very little time, I can get the top-level understanding of what happens in the city. Now as we go down, we'll see the data sets that are available around the waste. And as I said, this, we try to make it as accessible and easy to browse as possible. So here you see a data set on hazardous waste entering disposable facilities. And at the same time, I have a number of other data sets underneath, which if I were to have internet, I could show you. For all of the data sets, you can open them. And here comes that academic grader. We try to really detail to people where does this data come from? What is the uncertainty of this data? Can you rely on this or not? Who's provided it? And how can you replicate getting this data set? We link data to infrastructure. So as we go down, our next section is around what infrastructure exists for waste in Cape Town. And here you see, we have three landfill sites, three waste transfer stations, and 37 drop-off sites. There's more, we just started with this, but this gives you an idea. And here you can see on the map, you can browse the different facilities that are there. People can click it, open profiles, and browse them. Again, I'm not gonna do it now. To really get this idea of exactly what's out there and how is this related. It's set up in a way in which we link all these bits and pieces. So if I upload a data set that contains information of all the waste entry, all the landfill sites, I have to list one by one for each of the landfill sites what happens. I can check the full volumes for all the landfill sites, and then here you can see our three landfill sites. I can open the profile of one landfill site and it can pull the data for that particular landfill site. So there's many different angles to browse the same information so that people who are interested in a particular angle can find that. And finally, we can see the documents that are related to these different pieces. And then there are photos and videos. Now if you look here, this is a profile of a landfill site. And here you can see some photos, some maps. And this is a similar data set but not just filtered for this particular landfill site. You can download all the data, see where it comes from. And there's a lot of who uploaded this, when was it amended, et cetera. The process of putting information in there is something that, as I said, we want to make as easy and as crowdsourced as possible. So we've worked on a system in which people can upload information bit by bit. So we don't expect someone to have all pieces in place. So we tell everybody, listen, if you have any information on infrastructure, if you can find data on what landfills are out there, what incinerators are out there, you can put it in. If someone else has photos, they can upload photos. If someone else has data on population, geospatial information, everybody can contribute their piece of information. You upload this by following a very simple procedure. You format your data as a CSV file and you upload it into the system. The system then makes all those graphs. It puts it on maps. It links different things. It makes it available for download. So a user really only is concerned with formatting the data in the right format. We've been trialing this in a number of different places. We've worked with a late university in Holland to work on the city of The Hague. We've worked with a number of different groups in Cape Town. We've been working with Japan here in Beijing. And we're trying out how can we involve a wide variety of people in uploading and contributing data. And something that we're finding out in Cape Town is you really don't need to necessarily work exclusively with people who work in this field. We've done a number of projects with citizens who come together because they like, in this case, people who come together around the topic of open software. And it's people, it's web developers, activists, journalists who come together who don't necessarily know anything about sustainability. But we go there and we explain what we do. And they say, well, that's interesting. I'm concerned about this topic, how can I help? And it turns out that you don't necessarily need to know about sustainability to contribute pieces of information to this. So we've had people who know about programming go to open street maps and crawl for all the different train stations in Cape Town. They uploaded it in here. We've got someone who again knows about journalism and gathering information who went to the website of the city of Cape Town and found all the information about the dam levels in the city and populated that information. And it's really great to see how people who we normally don't get data from now contribute information to the system. And there's lots of things to do. We're only scratching the surface and we're only trying to figure, only now starting to figure out how our things different in different cities. And in Cape Town we have no incineration plans. U-Paint showed us that here there's a number of incineration plans. So we have to just add a new type of facility to make sure we accommodate them. It's a very simple example, but we'll come across many of these different issues that we'd like to solve with the community, with the people that we work with. So this is very much a collaborative project that is at its infancy, but we think it provides some potential. So our goals with this project are to take urban materialism to a more practical level. And we want, in the first stage, we just want to populate the system with information. Just have all these little bits and pieces in there. We don't look at the city as a whole. We wanna unpack the box and look at, you can see at land film level, at suburb level, at whatever level the data's available. So it's very much caters to this multi-level data upload. At the same time, our goal is to say, well, once we have information, we must start doing the things that we as academics do. We must put together a system-wide understanding of what happens in the city. But we don't do that as a starting point. The starting point is to put all these pieces in. Then we can try and understand the different systems. The water cycle and the food cycle and whatnot. But ultimately, our third phase of the project is to develop tools around this. So we'd like to see, and we're engaging with city officials, to say, what do you need to help your decision making? What do you need to help your policy making? And some of the things that we have planned, you can imagine if you have a number of different datasets for every city around the same time. You could do a lot of interesting things with that. And if we take the example of waste, let's say we have different waste technologies. So again, you can talk about incineration and other landfill solutions. And you can talk about the ways you collect waste with all the different technologies. And there's different types of methods being used in different cities. Now, if we have lots of data that paints the clear picture of the environmental impact of the current method employed in the city. And at the same time, we have similar data sets in other cities that use other technologies. City officials can say, well, let me use the system to try and understand what would the impact be of swapping out all technologies, upgrading, employing different tools. Would that ultimately, if the system allows them to forecast what the environmental impact would be? And again, here we need the city-wide impact, because you can't just talk about waste. We need to see what the total impact is. But if our system can help understand the total impact, it becomes much easier for city officials to get a better understanding of the impact of the decision making. Now, you can think of many other tools that you can offer to city officials and to practitioners that help them make better decisions and that help them understand better what the impact is of different alternatives. And as I said, we very much at the beginning phase, but our goal really is to provide tools that are useful at a practical level. We don't know yet exactly how we'll get there, but we think that the first step is to create this kind of tool and to engage with relevant people. So that's our system 13th place. And I'd like to ask you, Peng, to continue to talk about the system. The system. Shall I help you make it? No, maybe I can. My best thing? No, I have to move to the other part. Okay, so I'll open it again. So to introduce, we have worked with you, Peng, who's based in the German and who's done a lot of MFA work. Yeah. We've worked together on work on Beijing, which is for us very far from home, but for you, Peng, much closer to home. So I'll leave you.


Dad forgets his baby on the train. Passengers couldn't believe what happened next. Science explains that being forgetful is totally normal and can happen to anyone. The human brain can get rid of unnecessary information and in the process lapses and memory occur. But while most of us forget simple things such as a grocery list, a friend's phone number or the name of a song, perhaps most of us would agree that forgetting a baby inside a train is just completely absurd. Well, one father from Ohio experienced this heart-stopping moment and the video footage that shows what happened after will make you speechless. Last month, the usually quiet train station in Cleveland, Ohio experienced chaos when a passenger alerted the driver that there was a child in a carrier who was left on the train unattended. The management staff of the train station was utterly phased and dubious about what really happened. Fortunately, the surveillance camera had provided them with an answer. On January 12th, a train from Greater Cleveland Regional Transit Authority was preparing to leave the Windermere station. It wasn't rush hour and there were only a few passengers on board. At about 10.30, a man carrying a child in a baby basket got on the train. Judging by their bags, it seemed that the father and the baby were going far away. Since the train was almost empty except for one other lone passenger, the father put the child's carrier comfortably on the train seat. He even double checked if the baby basket would boggle or not. The baby seemed to be in a good mood, so the father sat on the other side while waiting for the train to depart. After a few seconds, another man entered. The father of the baby patiently waiting for the train to leave the station when the third man quickly stepped out to smoke a cigarette. There were still a few minutes left until the train left and one cigarette wouldn't take a while. From the open door, the father watched and patiently waited as the other man was enjoying his smoke. It could have seemed he was staring at the man and thinking about whether he should follow him. For a few seconds, the father of the baby contemplated the idea of going outside to have a quick cigarette too.  Soon enough, the temptation set in. Giving a quick look at the child, the man quickly stepped outside the train and approached the smoking man. The footage shows the father looking for something below the train seat. He bent down on the floor, possibly looking for his lighter. Failing to find what he was looking for, he decided to borrow a lighter from a fellow passenger. As the train sat idle, the two men enjoyed a quick smoke while chatting. Meanwhile, inside the train, the other passengers sat in front of the seat the baby was. Perhaps he got lost in the movement, but the father of the baby somehow missed the train's signal that it was about to depart. Even his fellow smoker showed no sign of urgency. The man inside, however, got alarmed when he realized that they were about to leave. He looked at the unattended baby and started banging on the window to catch the driver's attention. Despite the hard banging, the two men outside didn't even bother to look. Either they heard the announcement and totally ignored it or they didn't process the signal. They were close to finishing their smoke, as if thinking there was still enough time to catch the train. Seeing they had no time left, the man inside the train rushed to the door, but by then it was too late. The door of the train had closed before the concerned passenger even had a chance to shout. The loud sound of the departing train seemed to wake up the two men from their trance. Abruptly, the father of the baby reached for the door. However, there was no way he could open it as it was automatically locked from the inside. The train went on its way. The father tried to bang the door while trying to check his baby from the window. The train was moving slow and he realized he needed to catch the driver's attention. Soon enough, the man could be seen running towards the front of the train while shouting hysterically. However, the driver didn't notice. The bewildered father ran as fast as he could while banging the side of the train. Despite the roaring engine, he desperately tried to get the attention of the driver. Some witnesses who didn't understand what happened got nervous as the man seemed to chase the train blindly. However, his instant reaction was entirely understandable for the passenger who knew what happened a moment earlier. The passenger who tried to warn the baby's father that the train was about to leave was feeling pitiful. The father was clearly at the height of his panic. He saw him desperately shouting until he could no longer be seen. Being alone with the baby in the wagon, the passenger tried to seek help. After checking that the baby was safe and sound in the carrier, he tried to look for help. Another fellow passenger helped him reach the train operator. They reported that there was an unaccompanied baby on board. They also added that the baby's father was left by accident at the Windermere station. Fortunately, the operator staff quickly responded upon hearing the concerned passengers report. The train was headed to Superior Station, which was only a minute away. The person in authority ensured the concerned individual that the train would return. For the meantime, he was asked to look after the baby to ensure that nothing would happen while they were implementing the protocol. The GCRTA operations department coordinated with the transit police to ensure that all the necessary precautions were observed in order for the train to return safely. It didn't even reach the next station as the order to return was firm. Meanwhile, a member of the staff at the station approached the frantic father to ensure him that everything would be fine. For the father, that one minute felt like an eternity. When he saw the train returning to the station, he was extremely relieved. He hugged his baby as if the child had been gone for a long time. When the father finally realized that the authorities were looking at them, he desperately tried to explain himself. Somehow he knew he couldn't get away with what happened so easily. After the heartwarming reunion, the authorities waited for the father to calm down. They needed his official statement for their report. The train schedules were affected and there was a lot to explain. The incident was quickly put under control, however. The driver of the train was later coached for failing to follow the standard communication procedure. The father didn't escape scrutiny either. When the security footage was released, the father of the baby was heavily criticized. Despite his dramatic chase, most people couldn't believe that he would actually leave a baby inside a train to smoke a cigarette. He was lucky enough that the train station had its own set of safety measures and protocol that saved his child from imminent danger. The father's decision to leave the baby for a while to take a quick smoke break created a buzz in social media for days following the incident. Positive comments were credited him for the dramatic chase. Unfortunately, most people blamed him for being so careless. Others could only hope that what happened to him will inspire him to quit smoking for good.


Okay, hello and thank you everyone for being here. Today we're gonna talk about sensor, camera sensor driver compliance. And a little introduction, my name is Jacopo. I work as a embedded camera engineer for ADS on board. ADS on board is a software consulting company which is specialized in camera and multimedia support for Linux systems. Most of my contribution are in Vita for Linux and lib camera since the very beginning of the project. Let's start by saying what we're not gonna talk about today because software compliance could be tied to different things like license compliance when you have to interoperate software with different licenses which might not be compliant when we're with the other. Software could be compliant to load. GDPR is a good example of that. Could be compliant to a development process as well. If you have a well-defined development process and could be also compliant to some standard which usually come with some conformance suite which allows you to put a stamp on your product and you're very happy about that. We're gonna talk instead about API compliance and API could be considered a sort of a standard actually. API define an API define a specification that has to be interfaced that should be implemented by two software components in order to operate one with the other. Could be expressed in different forms like a documentation format, formal language description. You mentioned that. And could be validating in many different ways. You can have static code analysis like simply people reading your code or we have tools like linters that could validate the API compliance of your implementation. And I'm sure there are tools which I'm not aware about that could do that with some AI power stuff. The most common form of validation is runtime validation. Unit testing is usually could be also considered formal compliance testing to make sure that you are not regressing your API implementation. Fuzzing, which means injecting error condition basically or unexpected parameters in your API and see how that reacts. It's also form of compliance. As well as correctness checks. I was thinking about Vigrine which test the correctness in terms of memory allocation and deallocation. As we're talking about camera sensor driver and compliance everybody who has been developing Videfilinux drivers know or should know Vifra 2 compliance. Vifra 2 compliance is a great tool. It's part of the Videfilinux 2 utility suite which comes with many other in very useful tools like Vifra 2 control, VIF CTL, media CTL. And it test, it helps you test while developing that your driver supports the operation that it claims to support according to the capability that it exposes and also test and fast implementation in order to check that corner cases are well handled and your driver is not faulty. Vifra 2 is a great tool. It helps a lot during development. Everybody that which is developing Videfilinux drivers should be using that but is API compliance enough to guarantee interoperability between different implementation of the same API. If you have been following camera development the last four or five years you might have heard of Lib Camera. Lib Camera is a user space camera stack which aims to obstruct away the complexity of the Videfilinux interfaces and offers a unified API to application and frameworks to interpret with cameras. The reason being that camera got complex a long time ago. I'm sure you have seen the slides already. This is from 2009 and that's the user space interface of the OMAP 3 camera drivers. It's very complicated and application which were used to work with a simple pipeline and used to be portable among different platforms now are left to suffer and are meant to be ported to platform A, B and C to work to work. Lib Camera fills that gap. Lib Camera offers a unified interface to frameworks and application and obstructs away the platform details so your application is finally portable. That great it work but what happens if you have a single platform but you want to use different camera modules? That's a typical case for embedded development board. The most famous case is Raspberry Pi which has a set of different sensor but many embedded board offers the same set of selectable camera modules so you have an interface and you can swap in different modules. And of course modules have drivers which might different one from each other. So we are now having a single consumer for different implementation of sensor driver and what could possibly go wrong with that? Well, a lot of things actually. This is a little note the focus when the sensor driver I'm talking about are mostly Rob sensor for modules because that's the main target of Lib Camera and that's the sensor which are most commonly used with platform with an ISP. And the aim of the presentation is a little bit to share the pain that we have experienced by interoperating with different camera modules in the last years but also to provide to sensor driver developers and also reviewers. A list of tips or things to watch out when submitting or reviewing code which is meant to be interoperable with between different implementations. I have selected a basic set of feature basic in terms that it's what Lib Camera expects drivers to offer but it's also feature that are expected by most modern application. And for each one of those I would like to show how modules got thing drivers got things a little different one between the other. So let's start with the exposure and gain that's a concept we're very well used to it comes from the usual DSR camera it's a parameter that we're used to operate and exposure it's usually expressed as a duration it's the time that your sensor is exposed to light and it's usually expressed as a time duration microsecond or nanoseconds. Gain instead and might be digital rental gain is expressed as a scalar value it's a multiplier which is applied to all the color channels and is expressed as a scalar value. Both value could be computed by some kind of algorithm the AGC algorithm when the camera is operating auto mode or could come from the application or the user when the camera is operating manual mode. If you look at exposure that seems very simple we got a single controlling video for Linux to control that and it's typically expressed as a number of lines that should be exposed to light but it turns out that the V4L2 specification do not really specify a unit for the control. So you have some driver that use lines but some driver use fraction of lines to express the same concept and they're all technically compliant to the specification. So it's impossible to operate them generically if they got the specifications lightly different to one among the other. When it comes to analog gain it's even worse. We got three control for gains. We got digital analog and a generic gain for sensor that are not able to discriminate between analog and digital part and the control of the unit is device specifically is device specific. It's usually the actual register value that it's meant to be written to the sensor to control the gain and it's usually very poorly documented so it would require a lot of experimentation to get it right. So this is a simplified view of the solution that we had to implement a live camera to deal with that. Well, here it's what I've just described. You have an application that might be supplying exposure and now a value in manual mode or you have an AGC algorithm that computes those two values in auto mode but in both cases they are expressed as microsecond and as a scholar value and you have to apply them to different sensors. So we had to come up with a set of helpers that basically translate the analog gain value to the specific register value for its sensor while for exposure we decide to go for the simple way and simply decide that we're gonna compute that in lines. So the takeaway from this as a tip from drivers implementer is that if you want to control exposure or expose feature from your driver that allows you to control exposure please use lines as a unit. It's very unlikely that you need to control subline duration for exposure. There might be cases for that but in most cases that's not the case. When it comes to gain please use analog gain whenever possible. So at your datasheet try to find out the differences between analog and gain. Try to not use CID gain for those sensors because that confuses digital and analog gain and whenever possible provide an implementation or live camera for that in order that your driver could be operated generically and we got a source of knowledge that translate to your driver specific to your module specific register value, a generic value. Another interesting feature is the traditional HV flip. They allows you to do very simple two-dee-plane transformation like mirroring, flipping, 180 degree rotation. That seems so very simple, right? They're very simple control but they have subtle implication when it comes from row sensor, when it comes to row sensors. In fact, they could change the image format without user space actually wanting to change the image format. If we look at the, that's a simplified example of a row sensor pixel array. This is the first pixel. Sensors are usually mounted upside down to compensate for the lens inversion effect. And this is the default reading rotation. So we're reading rows then lines. And we have a buyer pattern which is the expression of the pattern of the filter, the color filter which is placed on the pixel array and if we go and read, we have a green pattern, a red pattern, then a blue pattern, and then a green pattern and that gives this buyer pattern code. But if we apply a flip, in example, the horizontal flip, we're gonna read pixeling samples in a different direction. So we're gonna eat a red pattern, then a green pattern, then a green pattern, then a blue pattern and that changes the buyer pattern of the buyer pattern produced by the sensor. Same for V flip, the same for H V flip. So it happens that if you allow flipping to happen while you're streaming, you basically change in the format of your image without actually unapplying a set format. That's something that VDF Linux has a way to notify to use a space for. There is a flag which exactly tells you that changing this control changes the content of the buffer or the memory layout. It's there, it's meant to be used for this kind of situation, but all the six driver in Mayline supports that. Now, I haven't checked exactly how many drivers are row sensor buyer drivers and support flips, but I suspect there are more than six in Mayline. So it might happens that some sensor allows you to flip while you're streaming and you're without notifying user space that the color pattern could change. Another interesting thing is rotation. We have been dealing with that like we have an upstream, very lengthy description of the device tree property like two years ago, and it was meant not to be that controversial actually. We define a property which is a device tree property. It allows you, if you're a device integrator, it allows you to specify how your camera is rotated in your device, and we have provided helpers for drivers to parse the device tree and register the value from the device tree through a read-only control. That seems very non-controversial, right? Well, it turns out, well, we already know that, that most drivers are programmed through register sequences. It means that the vendors provide you a set of register blobs and you simply apply them to, you write them to the bus and apply that configuration to the sensors. Well, most of those sequences embed HV flips enabled inside. That's because the vendor assumed that your camera's gonna be rotated upside down for the lens inversion effect that we've mentioned before. So it turns out that some driver have noticed that and got creative in order to work that around. In fact, that's been removed, I think the last really, really easy was, that's from 6.3, I guess. But some driver refused to even probe if they were not rotated 100 degree upside down because they have HV flip enabled and say I cannot operate if I'm not rotating the way that the configuration tells me I'm rotated. Also CCS, which is one of the most featureful driver we have in Mainline at the moment, had some creative way to dealing with that. Basically try to compensate for any implicit V flip and H flip that is applied by the rotation and inverse them.  And that seems very confusing and more than that, if any driver have a different implementation now to deal with this kind of things, that mean that it's very hard to operate them generically. So none of them was technically wrong. They complied with the API but they were not predictable. So that was good because we had to sit down a bit and have a discussion about how to deal with those kind of things. We were meant to write documentation as well for that but as a tip for implementers, always resist rotation with the value that comes from the DET properties. Really help for that. Do not mangle that. Do not try to compensate for that. If your driver programming sequences have HV flip enabled by default, please register the flip controls enabled by default. It's rather easy to find that out. You have a register blob. If you have a data sheet, you can look how the registered are programmed by default and if they are enabled, please register the control with the full value of one. And do not auto compensate for rotation because that user space knows better in that case. They know what is the use case. They know what the application want to do and if the driver does things like you try to outsmart user space, it might get very confusing. There is another thing which we have been dealt with in the past, which is the selection targets. We want to know the geometry of the sensors and we are kindly requesting driver but I hope the camera will make that mandatory in the future to support the few selection target. Some of them are trivial. We want to know the full pixel resize that's a property which is useful to expose to applications sometimes. We want to know what are the bounds of the pixel array. So all the readable pixel array area which includes the valid and not valid pixels like optically dark pixels or which are used for black level corrections or pixel which are shielded. We want to know if that's possible to read them. We want to know what is the default analog crop because that has the implication of the field of view of your images and more interestingly we want to know the crop rectangle with what we, it's called usually the analog crop rectangle. Three target are static. They do not change during the driver operation. So in one case we have to report the full pixel resize. This is the, it's slightly more colored. It's the crop default, the crop bound. I'm sorry and that's the crop default which specify the full field of view of your sensors. But the crop rectangle, the analog crop rectangle has implication on two things which are sensible for sensor drivers. The first one is the image field of view. The more you restrict the crop rectangle, the more less information you lose, right? And it also impacts the sensor frame rate because the larger is the portion of the pixel array that you feed to your internal processing pipeline, the larger is the timing that you require to be processed. So the lower is the frame rate. So it's very important to know in the current configuration what is your analog crop rectangle. Just as an example, this is two images with the same exact auto resolution. This is 180p if I recall correctly, but in one case that's the full field of view. So the analog crop rectangle was maximized. In the other case it was reduced so you lose a lot of information around that. And probably this mode is faster than the other one. So TGT crop, please implement that. So far we require them just to be readable, but as we want to go in a direction where we can control fully the configuration of the sensor, we would like to make them soon to be writable as well. And also to allow change in the field of view of the image that you are producing. Another interesting thing are blankings. So we got lengthy discussion in the past about how to control the frame rate of the sensor. VDF Linux provide an API which is the set get frame interval operation which is kind of a misleading API. It gives you a false sense of simplicity but it hides a lot of details. We all know that the frame duration is, that's a very simple formula. You got the total number of pixel that you put on the bus, visible and blankings which are the not active ones. And you have the pixel rate.  But it depends on a lot of different parameter, pixel rate and blankings. If we provide an API like set and get frame interval, we are losing a lot of things in the middle. And sensor might be operated differently. Might be operated different pixel rate but with the same blankings or you might want to enlarge the blankings and maintain the same pixel rate. That's something that should be controllable from user space. Drivers should not try to outsmart user space in that regard. So the total frame size depends on blanking as well. But what happens when you apply, when you apply depends on blanking and visible pixels but what happens when you apply a new format? So you change the visible sizes of the frame that you are producing. Well, some driver reset blankings to default. So that means that you apply a format and that changes the frame rate of your stream. Some driver adjusts the blanking only if they exceed the limit. So you apply a new format and you maintain the frame duration. Again, none of this is really specified in the API. Seems like an implementation detail but if you're building something on top of those things and you make assumption, you might be displeased. And another interesting things about blankings, you might have seen this pattern in many, many sense of drivers. So we know that the maximum exposure time is limited by the total size of the frame that you are producing. So if you change the blankings, it means that you might have to change the exposure time as well. This is a pattern that all drivers implement with all driver that support controllable blankings at least and that's something that should probably be better handle somewhere in the core instead of having driver do the same pattern every time. But so V blank limits exposure. And if you need to set both of them, you have to be very careful because you need to set V blank first, let the driver update the exposure limit and then set the exposure again. And you have to be careful about the order of the operation because if you do things in the wrong order, you might have surprising result. As a result of that, not long time ago, Benjamin tried to overcome this introducing a new control, which is currently in discussion. That's something that it was meant to happen a long time ago and if I got the recollection right, that's something that we start and leave camera as a discussion and then as we move to the kernel, which to me is a great thing because it means that cross-pollination between user space framework and the driver that are meant to be used by that framework produces better implementation in kernel space. There are other interesting things and then where the API might actually fall short. So we know that if this is the output frame resolution and this is the analog crop on the pixel array, we know that the same output resolution could be obtained in different ways. Could be obtained by binning, by sub-sampling or skipping frame. It might be obtained by cropping but we don't have an API currently to express that. So driver of course had to be creative and some of them actually kind of abuse the selection targets to compute the scaling factor. Some other uses the TGT crop target and the output size to compute the scaling factor. Again, none of those is actually wrong according to the API but there is no way you can control it in a reliable way from user space. So the takeaway from all of this, it's actually that writing application that works generically with multiple sense of driver, it's very hard. It's probably as hard as implementing, not as hard as porting between different platform or SUCs, but you need something that obstructs the way of that complexity because otherwise we will be implementing the same thing in your application every time. And when the API doesn't help them for many reasons because the API could be underspecified sometime for good reasons, API cannot get all the implementation detail right that drivers might get creative and the only way to overcome them is to be careful during review or do why you are implementing them. Something that I think is very important is that having a standard consumers of the kernel API, it's a guarantee that different implementation are more consistent one among the other. API compliance, even if we have tool to do so, it's not enough to guarantee interoperability. So as I've said, it requires a lot of review effort to get things consistent among different implementation and if we have a reference implementation that define the expectation, it's easier for even for driver implementers to get things, I'm not saying right, but more consistently among one among the other. Another thing which I think is relevant is that for a long time kernel API, not just immediate, have been implemented but not exercised consistently. When you introduce a new API, you are meant to provide a test for that in some test utility, but the way that is actually exercised by application is very dependent on the application that uses the implementation. Again, having a reference consumer of the implementation guarantees that the design chain, the design choices made by kernel space are actually sensible for user space as well. Going forward, like it happens for DRM and KMS, if you want to introduce a new API, you have to provide an implementation in some reference framework like Wayland or EGT or other test suites. We don't have nothing like that yet formalized for media, but going forward having a standard consumers when driver developers that want to introduce a new API are meant to provide an implementation for, I think is a guarantee that the design choices made in kernel space are actually sensible for application as well. That will be it for me. I know I'm being probably too fast, but if there are questions, otherwise we're gonna have an early lunch. Any questions, Hans? I can repeat the question if you want to fix microphones. Okay, well, it makes perfect sense. I understand that there is a lot of legacy there, and... Oh, sorry, yes. Hans' remark was that V4L2 compliance doesn't just do API testing. As I partially said, that it also does fossing and testing and implementation for correctness. And most of the things that we have mentioned in this presentation could actually be implemented as test, as part of V4L2 compliance. Is that correct, Hans? Okay, yes, I totally agree with that. And I understand that there is a lot of legacy in V4L2 compliance, and the landscape of devices that it was meant to deal with has changed during the year. So yeah, there might be space there, indeed. And V4L2 compliance is a wonderful tool, and everybody should be using that if they are upstreaming code to be different Linux. Eugene? If the compliance tool requires specific behavior, right? Shouldn't that be set in stone in the API in documentation? Compliant to the latest... Testing. Hey! Wow. Okay, let's try that again. So, the question was... Oh, you repeated that already, so don't need to do that. V4L2 compliance is for new drivers, like new sensors, and you want to make sure that they comply to the best practices. And you can't... Sometimes you can put it back into documentation, but quite often there are already older drivers that do it like that, and well, then it's part of the public API. But what you really want for new drivers, you should follow all these problems that you have discovered. And whether the compliance test would warn or fail on that, that is something you can discuss, but it should certainly output a message for if it doesn't comply. Since I have to mic anyway, I can have a follow-up question. Do we have a gold standard sensor driver that people can use as a reference if they make a new one? Yes, no. So, the most feature for one, it's indeed CCS. And the one that got the most attention, I guess, has been developed by one of the maintainer of the subsystem, so it has a lot of features. But it's also very complex. The golden standard for lib camera use cases are usually the sensor which are used by Raspberry Pi, because they put a lot of effort in the implementation, both in the sensor driver in terms of features and both in lib camera. So I would mention the IMX219, an example IMX290 probably, 296477 as well. What is the certificate? It's a review, you're right. So yeah, the REST sensor, I would mention the Raspberry Pi camera mode used in that regard. Eugene, are there questions as well, or? Yeah, I have a question. Okay. I don't want to force you. So you discovered all these kind of issues with all the controls, but have you come back to enhance the documentation on them on the website that there is for media to add some kind of use case? For example, when I read those some while ago, I don't know if you already added something to them or not, analog gain was just, this is the analog gain. So maybe we could enhance that with such use cases such that people would get used to it or obsolete some of them with some points because... An example, the blame is also on us because I mean I'm pointing those things out and one, like you said, why not correct the specification why not correct the specification in that case? Because sometimes, you know, for analog gain, there really depends on the sensor implementation. The exposure example I made, for some drivers, it's fine to expose them in sub-line units. Don't see a really need for that, but maybe the driver implementation and the use case for that. When it comes to rotation, we add like three meetings to discuss that, and we were supposed to update the documentation with that, but we didn't actually got there. So you're right, all those things should become more, should be formalized in documentation, correction in V4L2 compliance tests, and that's something, yeah, I take the blame a little bit for that, for not doing that already. That might help with getting reviews done easily because people start to drive or they send a patch and after sometimes someone like you or someone else who knows all this comes and say, okay, you're doing all the wrong, so you have to rework everything. If it's not documented like you say, it becomes tribal knowledge, right? I know that because somebody told me that, somebody told that, I know, I understand that, totally correct. Okay, thank you. Once again. Sorry, something just popped in my head. Talking about the exposure control where there's no unit defined, but you would like to use lines, I think it's perfectly fine to put it in a documentation that is strongly preferred to use lines as the units for your control unless it's absolutely not possible, something along those lines, which I don't think there's any problem putting it in there and then it's at least in the specification. Okay, yeah. Thank you. Yeah, about exposure control and lines and in general, the compliance, is it a different way for global shutter cameras to handle all that and this is a different way of compliance for global shutter cameras? I don't think it's that different when it comes to exposure, but of course, there are differences. I don't have anything that comes from top of my mind, but I'm sure there are differences and that should be specified in the API documentation, indeed. I don't know if anybody has some ideas about that or? One of the things that we don't support in video filming today when it comes to exposure time is to be able to specify both the course exposure time and fine exposure time and most times to support that, regardless of whether they're in global shutter or rolling shutter actually, because we've simply had no need for that so far, at least in people coming to us or streaming drivers and using those drivers, that's something we should do and so just the number of lines is fine for most use cases, but it's not gonna cover everything, so I'd like to extend that to at least being able to control the fine exposure and possibly, there are sensors that express the exposure time in different units as well. Do we want to convert everything to lines in the kernel to have uniform API to user space or further options that's in the other moment? So if you have good ideas on how to unify that, patches would be welcome or at least proposals and ideas so we could discuss them because that's one of the things we're missing as well is feedback from the industry on use cases that we wouldn't know about or shortcomings that we wouldn't know about and that's very valuable for us. And that's sensible for HDR, which is something which is not very well exercised at the moment as far as I can tell in the different Linux. So industry use cases are very valuable for that to validate the decisions. Any other question? Thank you then. Enjoy your lunch and thank you for being here. Thank you.


With open borders and a longivous sharing of history, culture and tradition for India and Nepal, the connection is special. Prosperity is our common goal. Our friendship is time-tested and unique. As immediate neighbors and close friendly nations, peace, stability and economic prosperity of Nepal is our shared objective. Three years ago, a new saga was written in the Indian-Nepal relationship with the commissioning of South Asia's first transnational petroleum product pipeline. From Motihari India to Amleekganj in Nepal on 10th September 2019 by honorable prime ministers of India and Nepal. In the last three years, more than 2.8 million metric tons of HSD has been pumped at Nepal Oil Corporation Amleekganj terminal, which has resulted in huge recurring saving to Nepal. And now with renewed vigor, the government of India and government of Nepal are poised to script the next chapter in this historic project with the implementation of phase 2 of MAPL at a cost of rupees 183 crore. Construction of Nepal's first fully automated smart terminal at Amleekganj, which will have capacity of loading 50 trucks, that is 1000 kL product every hour, which will have the capacity to cater to 80% demand of Nepal in single shift. Construction of 8200 kL of petrol tank at Amleekganj will enable pumping of petrol in this pipeline. Thereby utilizing full potential of this landmark project. The story of redefining Nepal's energy infrastructure continues. And today, the honorable prime minister of India, Srinarendra Modi. An honorable prime minister of Nepal, Sri Pushpa Kamal Dehal will lay the foundation of phase 2 of MAPL.


And it's Tottenham-Neal Bournemouth-Mill in the Premier League. No goals between Sates and Palace, or between Shrewsbury and Portsmouth. They're one-up in their big game at Chesterfield. It's a ball down the left-hand side. It's got Perisic in behind Tavernier. Perisic pulls it back. We've identified the threat coming down the left-hand side. Perisic has had plenty of joy, and the ball back finds Son, who's just brought up 100 Premier League goals in the last game. Number 101 gives Spurs the lead. Again, shooting from distance. Didn't need much of a sight of goal there. Whistling it a few yards wide of the left post from 20 yards. Short-blow kick via Stevens. Out to this dear side in Tavernier. Up towards Salanqui, holds it up. Now Rojo Rockwell does get it the game. The next lovely ball out to the left of Venier. This knock-in beyond Porro here. Matias Venier looking to get in the penalty here. He might be beyond his man. Who blazes it off target? What a perfect build-up from the Cherries. Left-hand side, switch the ball to Venier on the left. He might have been in himself. Lacking match confidence, square it for Christie. And for the edge of the area, a wild shot off target. And that's given away almost by Spurs there. It was Porro straight to Venier. Left-hand side, level with the edge of the penalty. Venier with a little nutmeg on his man. Tries to pull it back. Can't find Christie again. Matias Venier with some nice work and some confidence to go to the mix. All of a sudden here they come again. Skip, leading the charge. Knocked it out to Son. Right side of the penalty area. Son's feet are going left, going right. And Mepham dives in. And then smashed towards goal by Son. And then beat over the bar by Netto at the near post. And Son once again round Mepham into a bit of a mess. Right side of the penalty area. Dyer chasing after him.  And hammered away by Skip again. Selenki, just over halfway. Sorry, Wally. Quick this up in a second because Christie's got it for the Cherries. 30 yards out now. Tavernier right corner of the penalty area. Take some defenders away. Tavernier to shoot. And tipped over by Larisse. It was nearly another Marcus Tavernier classic. Cutting along the top of the box onto his left foot. Aiming for the top left corner. And panned away by the flying Larisse. Given away by Spurs. Just outside the area. Billing nicked it back. And here's Venier in on goal. Matias Venier has equalised for Bournemouth on his full debut. The Euroguide International has waited and watched from the bench for most of his Bournemouth career so far. First in the inside, left channel. He dinked it over Larisse. And seven minutes before half-time, Venier is the Cherries' goal hero. 1-1. I'll tell you what, we said he was a threat beforehand with a couple of instances that he showed. How brilliant is his calmness in front of goal to chip over the keeper. It comes from their mistake. Pedro Porro gets caught in the ball. We win it high back up. Lovely little pass in behind from Phillip Billing. Sorry, it's Dominic Selenki. He's finished.  And do you know what, Chris, on the balance of play, I don't think it's undeserved. Tavernier, down this near side, wins it. Knocks it infield to Christie. This is 35 yards out. Billing joining him. Here's Tavernier again inside the area. Pulls it back, Nelki for Billing. Christie's there. Options to his left. Christie goes down. He's giving us a dive. He's going to book him. I don't think it's a dive, Chris. Yellow card is out for Ryan. Christie here for simulation inside the penalty area. Now, of course, with the game stock, in the background, Tony Harrington will be checking this. We're going to get another look now on our monitor as Christie turns into the penalty area. Or the challenge came in from Christian Romero. Kelly down the left-hand side, looking for Selenki. It's going to run infield to the cherry striker now. Selenki's got it. Gets it down under control. To the left of Tavernier, who goes inside. Davinson Sanchez, who recovers. Selenki in the net, and then the traveling fans wild in that far corner. The progress down the left-hand side. Tavernier involved, and Selenki with an arrowed finish. Left-footed into the bottom right-hand corner. And 60-odd thousand in stun silence in north London. It's top-to-one for the two. Brilliant finish as well. Not dissimilar to the finish we stormed across after him from Vina. Absolutely brilliant play. Don picks up in a good position, plays and runs again. Davinson Sanchez, look at him. Look, he gives away a ball again. He's honestly, it can be a real harm to his own team. He's shown that again there. He's the one that actually sits the ball back in for Don to score. To the left-hand side, Perisic, fresh off going into the referee's book, trying to take on Smith. Good cross to Perisic, and it was looping under the crossbar. And Neto had to readjust himself there and parve it onto the roof of the net. Here's Kuleseski, just outside the penalty. That one's behind Dan Duma. The Dutchman will try and just about keep it in, which he manages to do. Back to Porro. Right corner, the penalty over Spurs. Another cross comes into the Cherries area, and you don't allow Harry Kane to much space. This time he's having to stretch for it slightly, and the header was white. Just one victory over Spurs, which came against nine men back in May 2019. The famous late-night fanakke header, and Mark Travers saved everything. There's a ball down this left-hand side for the Cherries, and Spurs nearly give it away for Jason to their own penalty here, and then Tavaneer gets a foot in. It's going to run out for a Spurs throw. Oh, that's loose on the back there. A penalty from the left-hand side, goes for goal, calmed away by Larisse. Ball over the top here for Dan Duma. He's stuck in beyond here. Chris Meeperman, Jack Stevens having to deal with it, and then Richard Allison shooting for goal, and it's looped in as a flag. Offside flag is up. To be honest, it was a right-old mess in there, and actually, to be honest, the Cherries have either gone away with one here, but we'll double-check it is offside. Well, this is my point from earlier, Chris. I think it's obvious from the first ball forward to the second. This is looking like the moment it could be the second in 33 as the ball comes into the Cherries box. Meeperman jumps, runs loose to Dan Duma! It's possibly once again in North London. 2-2. Came from a long throw, Chris. Long throw on the left-hand side as we spoke about pre-game. Never dealt with the first or second ball. Side try and defend yet another Spurs corner. In from Perishitz to the six-yard line, and headed wide by Richard Allison, a free header from six yards. He's on the edge of the six-yard box. He's between Watara and Kelly, and Solanki was in there as well. But Smith now, clearing it down into that far corner. The former Spurs man, and now Solanki, and Watara's completely free in the box. Solanki still has it. Here's Dongo Watara onto his left foot, onto his... Yes! Dongo Watara has won it for the Cherries! A facile winger chooses his moment for his first Premier League goal, and he is mobbed in a bundle by the Cherries players. I'll temper it with one thing. Just be careful, Chris. It could be deemed that this is a foul from Dongo Solanki for easing there, clear out the way, just got to wait and see. Well, let's hope not. But Dongo Watara has a smile that would light up the whole of Burkina Faso as we wait and see. Solanki just leaning into his man. There was no flag, there was no real appeal. Watara's definitely not offside. Still hasn't quite been given yet. What about the composure to chop back inside? Goal given! The goal has been given by Referee Andy Madly. The VAR check is over, and Dongo Watara off the bench. And what an impact he makes. The coolness he showed to chop onto his right foot and plant it in the bottom right-hand corner. It's a day for heroes, Venya and Watara first Premier League goal each.