On Monday, I left off talking about this which we call it exciting and dramatic ambivalence that one finds in the early Eliot that expresses itself in his relationship to literary tradition, where on the one hand he presents himself as a truly subversive and aggressive entrant into literary tradition. Someone is really going to shake it up and transform it. On the other hand, as someone who is a traditionalist who is going to speak with deference and seek as he uses the word he uses is conformity with the past. Somehow both these things are going on at the same time and in relationship to each other. Prufrock itself is a poem, I think, preoccupied with this kind of ambivalence that I'm describing. On the one hand it is a poem that introduces us to a speaker who lacks will and who seems timorous and timid and who hesitates before action. On the other hand, he is a speaker who says to us, there will be a time to murder and create, as if creating and murdering were, in fact, in some relation and might go on at the same time. In fact, if one does have some sense of creativity as involving a kind of aggression or even murderousness, one might hesitate before it. These psychological dimensions that I'm describing have Freudian and Oedipal dimensions that I think are readily apparent. How is it possible for Eliot to claim the authority of past literature without at the same time either destroying it or utterly submitting himself to it? This problem expresses, I think, Eliot's double relation to the past and is expressed, as I was suggesting last time, in the ambiguous use of quotation that seems to hover between some kind of deferential honoring of the literature of the past and something much more provocative and often parodic. You can think of the many different texts that Proufrock alludes to and borrows, only some of which are traced in your footnotes. In fact, there's a great many more. Excuse me. You find in your footnotes that there are quotations from the Bible, from Dante, from Twelfth Night. Well, there's that opening quotation from Dante, from the Gospels, too. Proufrock's world weariness, for I have known them all already, known them all. As understood in the poetic context, this seems to well express his sense of belatedness and of everything having, in some sense, been done already. In, again, Freudian or Oedipal terms, terms that Harold Bloom would develop as a reader of Eliot in his own criticism very influentially, you can put the problem this way. How can Eliot come to write in the father's place without killing it, or being overwhelmed by him? In his confrontation with the past, neither he, Eliot, nor the past, must be destroyed, or the game's over. Eliot thereby swerves, you could say alternatively, from each of these unacceptable alternatives. And that kind of back and forthness you feel in Proufrock's divigations and wanderings, you see it throughout Eliot's early career in his funny mixture of avant-gardeism and traditionalism, because he's both those things. I've been describing this in psychological terms. We could also think about it in social terms, and I think it's important to do so. This Oedipal drama that I'm describing is also a social drama in important ways. Here's a question. How does a young American, because that's what he was, how does a young American go and win a place in English literary culture insert himself in a tradition that includes Shakespeare, Milton, Tennyson, words where it insert himself not only as a member of that tradition, but as a central explainer of it and tastemaker, which is in fact what Eliot would become. Last time I pointed out that Eliot's expatriation is going from the U.S. to London was a rejection not only of America and American-ness, but in particular a rejection of his father and his father who died while he was abroad. There was a certain amount of question about would Eliot have time to see his father before he died. In a very short time in London, Eliot becomes more English than the English. It's a strange and marvelous, fascinating development. He learns or creates a certain style of English-ness that he then goes on to teach to the English themselves. William Carlos and in fact other American writers despised about Eliot that he was not just the anglophile that he was, but the true English authority that he became. He made himself, without any previous standing, any connections really in London or in English culture, he made himself a central cultural authority which became in a very short time almost synonymous with tradition itself. This is an amazing and remarkable achievement and an important cultural event. The thing is that the tradition that Eliot expounded was something to a large degree he invented. Eliot is not, as he is often seen, I think, the defender of a social order that was passing away, and sometimes Yates represents himself that way. Rather, Eliot is the representative of a new class, a new class opposing itself to the traditional social authority of money and of blood, aristocracy, makes its claim for social authority on the basis of knowledge, technical knowledge and expertise above all, a kind of professional class into which you, too, are being educated largely through the modern university. Eliot's tradition that I'm saying he invented or created, described, defined, he made it out of the education he had received at Harvard, but he also importantly made it outside of the classroom, in part in the School of Science, who you might remember from last week, specifically also when he expatriates leaves behind the vulgo, the people, and sees himself as entering into some kind of timeless tradition that he identifies, pound does, with the spirits of irony and destiny. Eliot also enters this kind of semi-imaginary community of tradition. Eliot's sense of tradition is established in part through his quotations and allusions in his poetry, in part, and importantly, and I'll talk more about it today, through his criticism. This kind of tradition with which Eliot allies himself, you could say, bankrolls everything he does, legitimizes and authorizes, gives sanction and precedent to what was Eliot's strange new poetry. Frost, you remember, as he says, goes to market so he could stand on his own two feet. Well, Eliot went to tradition to establish his autonomy. And tradition allows him to stand apart both from the genteel audiences that pound resisted, that Frost in certain ways courted, and also allows Eliot to stand apart from the avant-garde, which he has a kind of ambiguous relationship to. It allows him to stand apart, you could say, from the audiences of both a magazine like The Atlantic or Harper's on the one hand and on the other hand, a magazine like The Little Review or Blast, even, where he did appear or broom some of those magazines I showed you in the first week. Eliot's own magazine, which becomes an important vehicle for his work and his ideas and his authority and presence in literary culture. His magazine was, and you can go back and look at its cover in the images for the first week, his magazine was The Criterion, a magazine that had a kind of semi-official look and represents the kind of fantasy, I think, of a kind of institutional and universal authority. Well, how do you go about inventing tradition? In order to do so, Eliot had to demonstrate that the received existing tradition was a false one. The metaphysical poets is the great and peculiar, in many ways, essay in which Eliot undertakes this work in a very influential form. And I'd like to look at it with you for a few minutes. It starts in 950 at the back of your book and goes to 953. This was a book review. This is one of the great book reviews in the history of English criticism. Eliot was reviewing an anthology of the metaphysical poets, that is, poets of wit, in particular of the largely of the seventeenth century, including poets like Dunn, whose reputation Eliot did a great deal to establish in this century. In the process of reviewing this anthology, Eliot comes up with a whole alternative theory or alternative history of English literature and certain key poetic propositions and statements. Let me just emphasize a few of them for you. You'll see how the account of literary history and Eliot's own ideas of poetics are all kind of mixed up, and so you have to consider them together. On 951 he has quoted Dunn and then he's quoted Tennyson, and the idea is that Dunn is good, Tennyson is bad. Now, he will continue and say the difference is not a simple difference of degree between poets. It's something that happened in the mind of England between the time of Dunn, or Lord Herbert of Charbray, and the time of Tennyson and Browning. It's the difference between the intellectual poet, that's a good kind of poet, and the reflective poet, bad. Tennyson and Browning are poets, and they think. But they do not feel their thought as immediately as the odor of a rose. A thought to Dunn was an experience. It modified his sensibility. Evidently, he felt his thought as immediately as sensually as the odor of a rose. When a poet's mind is perfectly equipped for its work, it is constantly amalgamating, disparate experience. The ordinary man's experience is chaotic, regular, fragmentary. Maybe quite a bit like Phrox, you would think. The latter falls in love or reads Spinoza. And these two experiences have nothing to do with each other, or with the noise of the typewriter or the smell of cooking. In the mind of the poet, however, these experiences are constantly forming new holes. Well, you can see there are a little recipe for an Auden poem, or excuse me, well, maybe for an Auden poem, but for an Eliot poem. It's a poem about falling in love, reading Spinoza and listening to the typewriter while somebody cooks something. We may express the differences by the following theory. And note that we. Eliot has this we that you just have to bow before when he uses it, or join him, I guess. The poets of the seventeenth century, the successors of the dramatists of the sixteenth, possessed a mechanism of sensibility which could devour, and that's an interesting word, any kind of experience. They are simple, artificial, difficult, or fantastic as their predecessors were, no less, nor more than Dante. In the seventeenth century, however, a dissociation ofality set in, from which we have never recovered. And what does he mean? He means thought and feeling have somehow come apart. And this dissociation, as is natural, was aggravated by the influence of the two most powerful poets of the century, Milton and Dryden, and then he goes on to complain about Milton and Dryden, and then follow the romantic inheritance of Milton and Dryden in the next paragraph. He says, the sentimental age began early in the eighteenth century and continued. Wouldn't you like, in your own essays, to be able to give this kind of rapid-fire summary of literary history? The poets revolted against the ratiosinative, the descriptive. They fought and felt by fits unbalanced. They reflected. In one or two passages of Shelley's Triumph of Life, in the second Hyperion of Keats, there are traces of a struggle towards unification of sensibility. But Keats and Shelley died, and Tennyson and Browning ruminated. It's amazing, literary criticism. Well, here is quite an extraordinary account of English literary history. Eliot is proposing this. It's quite a strange and interesting claim, which for a long time, I might add, really was persuasive and became a kind of orthodoxy among readers of English poetry. That is that the metaphysical poets for centuries viewed as an anomaly in the history of English poetry because of their extreme intellectuality, their poetry of wit, that this anomaly in English literary tradition actually represents central values in literature that were lost through what Eliot views as an eccentric and aberrant tradition, which is in fact that which descends from Milton and runs through the Romantics and Victorians. Samuel Johnson in the eighteenth century influential complained of the metaphysical poets that they yoked the most heterogeneous ideas together by violence. This is Johnson's phrase. In other words, they were forced and willful, and they put things together in a kind of violent and artificial way. Eliot is flipping that around and he says, only the metaphysical poets united thought and feeling. It's these other poets that have been deficient and marginal to the main mission of English poetry and that they are symptomatic of some derangement in the mind of England that he calls a dissociation of sensibility, which somehow set in in the seventeenth century or so. All of this, this whole sort of account of how English literary history developed, all of this in this essay suddenly, without any preparation, turns into a defense of modern poetry, or you might say a defense of Eliot's poetry. He says, without, as I say, really any preparation on the bottom of 952, it is not a permanent necessity that poets should be interested in philosophy, as I was, or as I am, or in any other subject. We, and there's that we again, can only say that it appears likely that poets in our civilization as it exists present must be difficult. Our civilization, he continues, comprehends great variety and complexity, and this variety and complexity, playing upon a refined sensibility, such as mine, must produce various and complex results. The poet, and now he's telling us what poets must do, the poet must become more and more comprehensive, more elusive, more indirect in order to force, to dislocate, if necessary, language into his meaning. And then he will go on to quote French poetry, modern French poetry, to demonstrate as he feels that the continuity between modern verse and the metaphysicals. Well, here, excuse me, Eliot is saying, first of all, that the character of modern poetry, and again for which we must read his poetry, is simply a reflection of the forces playing upon it, the variety and complexity of our civilization. In that formulation, the poet seems almost passive, doesn't he? And passive and like a kind of receptor that is naturally and necessarily producing the kind of strange poetry that Eliot writes. Then, before that idea is really sunk in, Eliot gives us another view of what the poet is doing. The poet is not, in fact, passive, but rather he's forcing. He is dislocating language into his meaning. It's such an odd phrase to dislocate language into your meaning. It suggests that the poet is not merely producing language from one place to another. The question that we might ask, though, standing back of the metaphysicals is a question that we could ask of Eliot's poetry. That is, does this poetry that Eliot's talking about put things together or take them apart? Does it represent some kind of synthesis or rather some kind of violent derangement? Is it a mirror of a various and complex civilization? Is it, in that sense, memetic, realist? Or is it rather expressionistic, willful, kind of subjective and highly personal expression in which the poet is purposefully, actively dislocating and deforming language? Is it, in the sense, a poetry that is a kind of arbitrary and inevitable expression of the age? Or is it perverse and eccentric? An arbitrary assertion of authorial will. These are questions that Eliot's own work, as I say, raises and that are part of the history of his reception. Eliot, in his account of the metaphysicals and then in his defense of his own kind of poetry, seems, I think, to equivocate to a degree between these alternatives. Equivocation is, again, the key rhetoric of Prufrock and of Eliot's early poetry, of Prufrock's temporizing and his delays and his going back and forth. Let me say just a couple more things about Prufrock in the light of what I've just been quoting for you from the metaphysical poets. Prufrock has a kind of ambiguous relation to the past and specifically to the past of English romanticism. The poem is simultaneously a deconstruction and critique of the romantic ideals and values of originality, of expressiveness, and it is also a highly original and expressive reworking of those ideals. It's a kind of anti-romantic poem that is an extension of romanticism. Unlike the conventional love song, this one comes from the head rather than the heart. Or you could say, really from that opening quotation from Dante on, it comes out of many other texts. I think there's a kind of suggestion or implication in the poem that what people claim is original and primary is always, in some sense, already scripted. That consciousness, the way our minds work, is linguistic, that we think and feel through language, with language, and through a kind of collage network of verbal associations made out of texts and phrases from not only literary tradition, of course, but the whole spectrum of everyday life. Original speech, heroic action, the will, unmediated desire. These ideals are all rejected in proofrock, parodied, subjected to irony, discontinuity. They're seen as romantic illusions, clichés. But the poem is not merely a parody of them, or maybe through parody it does something else. It is, of course, in its own way, quite as daring and disturbing a poem, disturbing to the universe of poetry, at least, as any modern poem. And I think you can see it as, in effect, a new kind of love song, one in which the withdrawing of desire from an object, our consciousness of our own desires, subject them to reflection, but at the same time sustain them and re-voice them through reflection. You could say that what the poem does is to intellectualize longing. And behind that it makes of the modern skeptic and intellectual a new kind of romantic hero. What does proofrock want, ultimately? What does he mean when he says, no, that's not what I meant at all? I can't say exactly, but the poem does conclude, and as it does it gives us a kind of answer, I think. Why don't we look at the end of it? That's on 466. I grow old. I grow old. I shall wear the bottoms of my trousers rolled. Shall I part my hair behind? Do I dare to eat a peach? I shall wear white flannel trousers and walk upon the beach. I have heard the mermaids singing each to each. You see, here proofrock has moved into these rhyming tercets. He says quite simply and definitively, I do not think that they will sing to me. I have seen them riding seaward on the waves, and the white hair of the waves blown back when the wind blows the water white and black. And as he describes this, there's a kind of heightening of conventional lyric language with that alliteration and with those images. We have lingered in the chambers of the sea by sea girls and weed red and brown till human voices wake us and we drown. It's hard to interpret, I think, the end of this poem precisely. I think that proofrock has really no clarified, no specified desire, except maybe to hear the mermaids. I do not think that they will sing to me. I want them to. He seems to be saying, in a sense I think you could say, he wants romantic singing. He wants to hear it. Perhaps he wants to be able to join in it himself, which is a wish for lyric inspiration, isn't it? He doesn't want to make love to these mermaids. He wants to hear them. He wants to linger with them, to have access to their voices and to that extent to be among them and even like them. It is a wish for specifically freedom from human voices, which I take to be the endless, overheard inner voices in which the quoted, repetitive speech that makes up his consciousness consists. In this sense it's a wish for a renewal of romantic enchantment, which he knows is impossible, and which he also knows I think is a wish as old as Keats is owed to a nightingale. And this is a poem ultimately very much in that Keatsian tradition. The Wasteland. Let's begin at the end. Let's begin at the end on page 486. The Wasteland is a poem that comes in five parts. The fifth section, I think it's the longest, is called What the Thunder Said. It reaches a kind of climax when the poem renders the voice of the thunder. In the landscape of the wasteland we are waiting for water. We're waiting for everything that water would represent. And thunder promises that water. And it also, importantly, represents a kind of speech, a speech that comes out of nature, something that the thunder says, has all kinds of mythological resonance. You might even view as the voice of myth itself here able to be given a voice and a hearing in the poem. What the thunder says is da, da, primary syllable. There is a note explaining this, coming to us from your editor and from Eliot. It is the first phoneme that becomes part of the instruction, the series of instructions, da, da, da, translated as give, sympathize, control. When the thunder speaks, this is what it has to say. It gives us these instructions. I'll just focus on one of these imperatives. Da, dyadvam, I have heard the key. Turn in the door once and turn once only. We think of the key. Each in his prison, thinking of the key, each confirms a prison. Only at nightfall ethereal rumors revive for a moment a broken Coriolanus, da, damyata, and then the boat responded gaily to the hand expert with sail and ore. The sea was calm, your heart, and there's this interesting switch of tense, would have responded gaily when invited, beating obedient to controlling hands. Well, dyadvam is translated here as sympathize. The poem is in many ways concerned with sympathy as a central value, a central action in human life. The lines that they introduce describe the condition that sympathy would redress or enter into in some kind of healing way. I have heard the key. Turn in the door once and turn once only. Well, Elliot, when he produced not the first version of this poem in The Criterion, his own magazine where it first was published, but rather when it appeared in the United States, added footnotes or rather endnotes to the poem. The endnotes we have here are worth contemplating. In a sense, Elliot's notes are a kind of extension of the poem, part of the poem.  The speaker of those lines that Elliot is alluding to, half quoting, is Dante's Count Ugalino in the thirty-third canta of the Inferno. The trader Ugalino tells Dante that his enemies imprisoned him and his children in a tower to die of starvation. Of course, Ugalino would eat his children. Elliot continues. He gives us that little fragment from Dante, and then he says, also F.H. Bradley, appearance and reality, page 346. When he writes like that it's like wearing that waistcoat. It's a kind of pose, in this case the pose of a scholar pedant. Bradley says, my external sensations are no less private to myself than are my thoughts or my feelings. In either case my experience falls within my own circle, a circle closed on the outside. And with all its elements alike, every sphere is opaque to the others which surround it. In brief, regarded as an existence which appears in a soul, the whole world for each is peculiar and private to that soul. Elliot worked on Bradley for his thesis. The whole world for each is peculiar and private to that soul. Well, I don't know that there is any key to the wasteland, but if there is a key to the wasteland it's this key in these lines which lead us to Bradley and Bradley's view of what consciousness is like. Consciousness is a condition in which we are locked into our own, I think, linguistic representations of reality without a common language to share them. How can a common world be created out of radically private experience? Well, this is, I think, the central question that the wasteland is meditating on, responding to. It's one of the central questions in modern poetry. We won't get too far in the poem today. We'll have to conclude our discussion on Monday. Let's look at the beginning together to simply to recall how this poetry operates and make some preliminary observations. This section, the first section, is called The Burial of the Dead and refers to the ritual in the Anglican Church as described in the Book of Common Prayer. Excuse me, April is the cruelest month, breeding lilacs out of the dead land, mixing memory and desire, stirring dull roots with spring rain. Winter kept us warm, covering earth and forgetful – feeding a little life with dried tubers. Summer surprised us, coming over the Sternberger See. With a shower of rain, we stopped in the colonnade and went on in sunlight into the Hofgarten and drank coffee and talked for an hour. Bin Garkaena Russen, Stamos Lütau, echt Deutsch. And when we were children, staying at the Archdukes, my cousins, he took me out on a sled and I was frightened. He said, Marie, Marie, hold on tight and down we went. In the mountains there you feel free. I read much of the night and go south in the winter. It's extraordinary poetry and one of the ways in which it is extraordinary is the modulations and where do we pinpoint the turning points between the initial, vatic, general voice of the poem and then that extremely personalized first person who will be Marie, and that way, through that memory. How do we get from April is the cruelest month to I read much of the night and go south in the winter? Somehow there are a variety, I think a range of voices here. And how Eliot moves from the one to the other is a question for us as readers. I think it also raises, again, this sort of central problem that the poem is concerned and that is what is the relationship? How do we articulate the relationship between the general and the particular, between experience that is generalizable and that which is almost irreducibly private? April is the cruelest month. Those wonderful lines we all know. Well, the poem begins with allusion that it hardly even needs to press to Juan de Roper with his short sota, the first line of the Canterbury Tales. It evokes two probably Whitman's, When lilacs last in the door yard, bloomed another April elegy. The poem begins by talking about the pain of awakened desire, begins talking about the risk that comes with beginning and desiring, proofrock's themes. Here they are, writ large. Desire it seems is painful because it breaks things open that are closed and shut. It's also, it seems, unsatisfiable. All of these are, to a degree, conventional romantic topoi motifs. Where exactly does the poem modulate into personal memory? Well, maybe somewhere in that eighth line some are like this. It starts out looking and feeling a lot like winter kept us warm, but now the memory will become highly particularized through quotation, incidentally, as your note will explain. The poem really moves into a kind of opaque set of personal associations. When we were children staying at the Archdukes and so on, he took me out on a sled. These associations are meaningful and resonant and representative, I think to the extent that they have a generic quality. That is, it's not so much that they are our memories, but they're like memories, they're like personal memories, and they're like personal memories in their very difficulty of translating and sharing them. Marie has a kind of exemplary privacy about her and her memories and her sense of frustrated desire and longing. There is more that's important about this first of the Wasteland speakers. The, well, Bingar Khayana Rusin is translated for us down below as, I'm not a Russian woman at all, I come from Lithuania, therefore a true German. Whoever is saying that exactly, whether it's Marie or someone else, seems to be speaking of a kind of hybrid identity, a kind of mongrel or deracinated identity. The condition of locked-in sensibility and difficult private emotion is from the very beginning of the poem associated with metropolitan culture, a culture where there are many languages, speakers from many places, and well, to the culture where there are, as it were, a kind of cacophony of languages untranslated existing and competing side by side. This is a kind of linguistic environment that the Wasteland is made out of and is also in many ways about and is the real medium of experience in the poem. Well, let me stop here and we'll go on trying to make sense of this great modern poem on Monday.


Now the Progressive's Governors Forum has appealed to the members of the Academic Staff Union of the University to suspend its seven-month-old strike in the interest of students and the country at large. Chairman of the Forum and Governor of Kirby State, Atiku Bagudu, who made the appeal while speaking to State House correspondent after a separate meeting with President Mohamed Buhari and Vice President Professor Yamio Shibajo, reminded the lecturers and stakeholders of the implications of directions which he says will affect the country's image among the committee of nations. Many other stakeholders, governors, national assembly members, President, Vice President, remember, during a sunlight visit to be paid to President Endaura, Mr. President appealed to Ayanika to Asu and said Aysu should be mindful about the future of the next generation. He didn't play a blame game, he spoke as a father, I think he even went father to say even if Asu has been offended, they will please think about the next generation. I think that is the best statement that can come and all of us are appealing to Asu in particular and indeed all stakeholders, let us do what will ensure that we don't miss out. Nigeria is competing with other countries, we do not have the luxury of time, so we will continue to urge all stakeholders to do the same. The governors who visited the VP on this call did need for Nigerians to have confidence in the nation's healthcare professionals in order to reduce medical tourism. On medical tourism, I just mentioned how happy we are that the Vice President showed confidence in the nation and he drew our attention to something that we didn't know. He said that in other countries, medical professionals can advertise their skills. In Nigeria, there is a professional code of conduct that denies them the opportunity, so he invited us to look at that so that we can also maybe put pressure so that Nigeria medical professionals can be at par with their professionals in the world, meaning that we will know the capacity and competency that I hear locally and I'm sure that will boost medical tourism.


Hi, my name is Lisa, and I'm a vegan, and I'm here with produce wheat sample to show you guys some delicious, easy recipes with produce because it's dope. Truth and vegetables are great. Today I'm making a recipe that's a vegan take on a omnivore classic, chicken noodle soup. But instead of chicken, I'm using chickpeas. In my original recipe, I use a vegan chicken, but to make this more easy, and this is something that I do all the time, I'm using chickpeas instead, so you still have that protein goodness, and it's just easy to refine. In a large stock pot, add a little bit of oil, Ontario onions, carrots, and celery. This is called a mirepoix. This is gonna be the base of the flavor for the soup.  Next, add your spices. Add poultry seasoning, which is typically vegan, dried parsley, and turmeric. Turmeric is mostly for color. Next, add some water or vegetable broth. Here I've used water, and I have mushroom broth seasoning, but you can use whatever bouillon or soup base that you like. Next, add your canned chickpeas, cover and bring to a boil, and then lower down to a simmer. Cook for about 15 to 20 minutes until your vegetables are totally softened. Next, add your cooked noodles. We used facility pasta here, but you can use linguine, fettuccine, whatever kind of noodles you like. So this chickpea noodle soup is perfect for cozying up during sweater weather. It is super tasty, it's hearty, and it's super simple to make. If you want the full recipe, it's linked down below, and it's also on producemadesimple.com today. For more easy recipes, please like, comment, and subscribe, and we'll see you in the next video. Bye. Oh yeah. That's the stuff. Oh, shall I break crackers into it? Sure. Perfect for sweater weather.


So this joint work with PG-Studion for Skangar. So on this slide you see block ciphers. This is plain text. This is the first round of block ciphers. Those are internal rounds. This is the last round. And we look at some bits which is the output of the first round. Those bits are input to the last round. And we find a joint distribution of these two vectors. These are vectors, not one bit. And this distribution actually depends on all these key bits. These are round keys. We're able to find some approximation to this distribution. And we want to use this distribution in a kind linear cryptanalysis. So if the size of this vector is large or the size of this vector is large, so observation of the x and y depends on so many key bits from the first round key and the last round key. So conventional linear cryptanalysis, multivariate linear cryptanalysis is not efficient. This cryptanalysis uses logarithmic likelihood ratio statistic. And this case observation depends on so many key bits. And distribution itself depends on some key bits. So that statistic itself depends on so many key bits. And to use this statistic, you need to power the size of the key bits computation. This is too expensive. So instead, we propose to use a number of projections. We know distribution of this vector, so we can compute distribution of this vector, these are projections of this vector. We use only linear projections. This is more easy to use. And each projection may depend on lower number of key bits. And that is a quite important fact. So we are able to construct vector of logarithmic likelihood ratios for each projection. And we know distribution of this vector asymptotically. If value of key is correct, this is a priori distribution, this vector distributed as a multivariate normal vector with parameters which are easy to compute. And otherwise, if the value of this key bit is not correct, it is distributed in this way, where n is the number of variable plaintexts. It is supposed to be big. Now we need to distinguish between two normal distributions. And we use a linear statistic. Fortunately, this linear statistic is a linear combination of a linear statistic for projections with some weights, which are computed explicitly. And we know distribution of the statistic. It is distributed this way. It is one way of normal distribution if the value is correct. And if the value is not correct, it is distributed this way. And we use this fact in cryptanalysis of block cipher. So we can reconstruct the number of values of these key bits from the values of key bits which affect the projection. And this value which we want to reconstruct should satisfy this condition, where s is the statistic we constructed. This is some threshold. We devise an algorithm by working over search tree because we know distribution of this statistic. We can compute success probability as the number of key candidates in the end to be brute-forced. We implemented this attack against full ds. We used 28 10-bit projections. And we computed success probability. We took it 85% as in Matsui's. And the number of key candidates, 56 big candidates to brute-forced was 2 power 41.8. The number of plaintext is 2 power 41.8. It may be compared with Matsui's success probability, 85%. And the number of key candidates to brute-forced is 2 power 43. And the number of plaintext is 2 power 43. You see that it's a little bit better. And another advantage of our method that we can compute success probability theoretically. This is usually a difficult problem for such kind of attacks. This is a basic variant of our method. And we have room for improvements. The work is still in progress. Thank you very much.


Hey, Olivia. Truth or dare? What did you say? Truth or dare? Truth or dare? Truth or dare? Truth or dare? Truth or dare? Marky's constantly cheating on Lucas! Marky, I don't know what's going on. I'm serious. I'm seeing things. Touch me again and I'll break that hand.


Hello. Hello. While we're waiting for people to come, that bug, the one where there's that assert, Alyssa, on the message begin headers, I think it's a bug actually in HTTP parser.  Because the code in HTTP parser in certain paths makes it seem like you can. But basically what's happening is that if there's a carriage return or line feed before the beginning of the response, it'll fire the on message begin callback multiple times. So it's definitely a bug in the parser. I'm just not sure if like it should be allowed or not. I think I'll file it down and see what they think. Yeah, I mean I think I'm just going to add a test and like because there's three different keys is where this happens and in two of the other cases, it just ignores carriage return line feed. In this one case, because of the bug, every time you get a carriage return or line feed, instead of just skipping it, it'll fire the on message begin callback. So that's why it's all going haywire. But like based on the spec, it was unclear to me if that's even legal, but I guess I'll just I'll make a test and file an issue. I have never seen that. Oh, but there's all sorts of things that shouldn't happen that are connected. I actually don't think this one is. Yeah, I don't think it's allowed either, which is surprising because they have strict mode and not strict mode. So I'm not sure what's going on there. But it's only message begin. It's not trading it as like, hey, you sent an email message on the display. No, no, no, yeah, it's definitely a bug. So yeah, we can work around it and then just have them fix upstream. Well, yeah, I mean, it's a pretty simple fix. So I'll just do the fix. But yeah, we can see how that goes. This is the one where we get the health check response before we actually sent the request. Well, yeah, I mean, so there's the fuzz test failure that Harvey found. So I debug that. I'm not sure if that's the same issue as the WebSocket one that was reported. I think it probably is, but I have to test it. But like, because I'm guessing that the WebSocket thing for some reason is like sending either a carriage return or line feed before the actual response. That's my guess, but like, I will go and debug it. All right, let's see. So we have a couple of things on the agenda. I guess, is Greg on the call? Oh, yeah. Yeah, I'm here. Okay, cool. So I don't know, I was thinking we could do the, like just the quick items first and then we could talk about the WebSocket stuff. Okay, I see the first quick one is it came up during code review that historically in release notes, we have not put bug fixes. I don't really have a strong opinion. Like I think some projects, they'll break out, they'll break out, you know, things into features and bug fixes and then with the bug fixes, they'll link to like the original issue. It would be a little more overhead for dealing with fixes to people have a preference on that. I don't really care. I think I'd be okay with kind of taking our case-by-case basis on the severity of the bug. Like if it's unlikely anyone has ever seen the bug, not bother. If it's a big thing, then definitely. Okay, all right. In between then just kind of. Yeah, that's fine. I mean, yeah, it kind of, it seems like unnecessary overhead to like list every individual bug fix. So that's fine. I mean, why don't, I will do a PR to the PR template that basically says roughly that, that like we can use our judgment as to if it's a pretty severe bug fix that we can add it. Any, anyone have any objections to that? All right, I'll do that. I guess, Dave, do you wanna give a quick network service extension update before we get into WebSockets? Sure, so I've continued to grind through the file descriptor, socket, call replacement. I've just about got the PR ready to do an initial push. The place where I'm gonna need some input and some help is how do we, how do you want us to take the network service factory and hook that into the config stuff? That was kind of a little confusing to me about where to put that. And so I think we can just discuss that. Yeah, I would probably not worry about that right now. Like I would get rid of the FD first like in all the different places.  Like if it makes you feel more comfortable, like you can keep a file descriptor like password is today and then just start passing this abstraction object that also has the FD and then like do incremental PRs where we like get rid of all the FD calls. And that might be the better way to do it than one giant PR. All right, well, I pretty much have the giant PR done which I think is certainly worth having as a roadmap. And then we can look at, so I'll push that the next day or so. And then we can roll out an implementation thing. So, I mean, some of the other minor questions are, there are some socket calls in the OSS calls class, Singleton class, and does it have value to leave those around? I initially ripped them out, but then today I was thinking, well, maybe for testing purposes, that's still a value, but now for the most part. We had put them in mainly for testing just so that we could override those calls. And I think essentially, once we have a registrable object, we could just as easily swap out an object that does a fake sys call. Yes, all right, yep. That would fulfill the need in a more clean way, but it may take a couple of steps before you get to that point again because you have to be able to configure it and then have that test mockdown one. Yeah. If you need to be able to test the actual object that does the actual sys calls, you may still want this. Right, well, that was really the thought I had last night when it's winding through some of my cleanup was when we start to test this stuff whether that still has value. It probably does. And so, and I'm still, I mean, there are still a bunch of places and well, I'll push something sooner rather than later at this point, because I think I've got enough volume to generate a good discussion, but there's still a lot of places, even with that where they're just native socket calls that exist around the code base that ideally we want to get rid of those, but we want to do that in a structured fashion.  It has a tremendous amount of value even outside of VPP, just because we're gonna end up eventually porting the code to Windows. And I mean, it's like there's just, there's a whole bunch of different reasons why this end up being super useful. So, I mean, I think all of the work that you're doing is gonna be great. It just, it doesn't have to be, I guess what we're saying is it doesn't have to be done in like one giant drop. Like if it makes sense to do it incrementally, that that's probably right. Well, I just kind of ran into the, pulling the thread and unraveling the sweater trick. And so I just kept going because it just, it made sense to me to keep exploring that. Yeah, I mean, let's just look at the giant PR. Like I actually think for the most part it's going to be fairly mechanical or it should be. So let's just see it. And then if it looks like there's some obvious places where we could split it up, you know, we can do that. Sounds like a plan. Great. Okay, WebSocket. Maybe either Alyssa or Greg, could you catch everyone up on the conversation because it's kind of complicated. Sure. So essentially right now for those of you not terribly familiar with WebSockets, essentially you send it to each TV header saying I'd like to upgrade to WebSockets and then everything following that upgrade the, and the response header saying, yes, your upgrade succeeded or no. And then from then on kind of what normally would have been HTTP payload is WebSocket data. So right now the way it's implemented in Envoy for HTTP11 is Envoy intercepts those headers. So it's great, this is WebSocket. And then basically detaches the rest of the request processing to the TC proxy session. Say look, this is no longer HTTP. We're just going to proxy the WebSocket payload upstream and be done with. So there was requesting, okay, that's all well and good but we'd like it if the WebSocket request headers went through the normal HTTP filter chain because the upgrade headers are headers. So that would be nice. Meanwhile, there's a second issue that about how to handle WebSocket for H2. And there's a spec in progress theoretically should be ratified in the next week or so if it hasn't already saying basically for HTTP2 where you can't take over the entire upstream connection you would use connect to effectively tunnel this WebSocket data on one H2 stream which makes a lot of sense. But the problem is at that point, the H2 WebSocket, the headers and all the data would go through your headers and normal HTTP data calls. Meanwhile, the HTTP path, we're doing it with this weird kind of hybrid of handling the HTTP headers eventually and then TCP proxy handoff for the data. Doing it differently seems like it's gonna cause a lot of confusion in the long run especially because if your upstream is auto is doing HTTP or HTTP2, like halfway through you're deciding what weird thing you're doing. So we're just trying to resolve what we wanna do and ideally unify these cases if we can find a way that makes sense. Yeah, I mean my idea which would be a bunch of work is to actually make new filters and then basically have parallel filter stack. And I think a lot of the filters that you have could implement both interfaces but that would basically allow you to specify even like on a per route basis potentially that you could fork off or maybe even not per route but like on a HTTP connection manager level you could have like a WebSocket filter stack and then like a non-WebSocket filter stack and that would require filters to opt in to basically being WebSocket aware instead of suddenly getting into a situation in which you have filters that might now be getting WebSocket data and then like some of the calls might be different. So for example, like you don't need 100 continue or like those types of things. So that was one idea that came to mind that seems like the most extreme solution but it might lead to the least amount of confusion. Yeah, the thing I don't love about that is again, I'm concerned that the API would be similar enough that you couldn't reuse the code. Like essentially you need the same headers and the same data functions. We just might mean them slightly differently. Well, it doesn't, I mean, I guess again, like this is mostly brainstorming. It doesn't even necessarily mean that we have to define like new interfaces in code. It would more just mean that you would have to as a user effectively opt in to say that like these are the filters that run if it's a WebSocket connection. Okay, so more of a config perspective. Because that's what you're saying. Right, so like it would be more of a config thing where then what the, so right now if you look at the connection manager code we end up instantiating the filter stack like right when the stream is created but there's no technical reason that we have to do that. We could actually wait until we get headers complete. So we would know if it's a WebSocket upgrade request. And then at that point, we could basically say like not WebSocket instantiate the not WebSocket filter stack. WebSocket instantiate the WebSocket filter stack.  So like instead of the TCP proxy being bolted into the HTTP connection manager you would allow it to flow through. And then at the end of the WebSocket chain it's like a WebSocket router. And again, like maybe that's mostly the same code as the current router, like maybe it's the same code. I don't really know. But that could take care of the is it HTTP1.1 like maybe do the TCP proxy thing. Like if not do something else that's kind of what comes to mind. Like I'm not sure how else you would do it without it being potentially super confusing if people are trying to support both non WebSocket and WebSocket routes. Yeah, I think having the config filters different is totally reasonable. I don't understand what value the TCP proxy session would have in that case. The current handoff we have. Because I thought about No, no, right. No, right. So I'm actually suggesting to get rid of like the way that we do it today which is to bolt it directly into the connection manager. I'm suggesting that we basically kill that. And then, but we still need something at the end of the line, right? That basically knows what to do with that data. So right, because like you're not, you're not proxying like a full connection at that point. You might need to make like a dedicated upstream connection and then kind of switch into TCP mode. So, so like I don't, I mean, again, I haven't thought about this enough but it doesn't seem like you could just rip the code out of HTTP connection manager and like use the existing router. Like it just, it wouldn't work. So that's kind of why I'm saying is that you could have the existing filters like an alternate WebSocket filter stack where you could do header manipulation and maybe even data manipulation or something like that. And then- I'm still actually a little bit confused why you think we need something different at the end. So just internally, we treat WebSockets as HTTP 11 data, it's just BiDi. That's the only difference. So we literally use, I mean, when you do the upstream connection you have to pass headers on and then we just pass headers on and then say, great, you're streaming data back and forth from that on. Yeah, maybe it would work. I'm just thinking through the cases where like if you went to a connection pool that was like trying to reuse the connection and like you had like previously sent like a non-WebSocket connection there and then you like reuse it on the pool. I just like, I feel like there's gonna be corner cases there. Like it's not clear to me that in the current code it will work with all edge cases out of the box. Like I feel like you could get into a situation where let's say that I have an upstream that supports both WebSocket and not WebSocket and I'm doing connection pooling. Maybe I've pipelined or sorry, I've like, you know, I've sent some requests, I've gotten some responses with Keep Alive. Can I then switch that connection over to WebSocket? Like is that okay, maybe? I don't know. Works for us? I don't know. No, no, no, right. So it's like, I mean, it might totally work. I just don't know. I think those are things that might need to kind of get sorted out. Greg, do you have thoughts on this? I think, I don't really have strong feelings either way. I agree that what we have now is a bit of a clutch. Does anyone actually have the time to do the work to sort this out? Well, if it's, I mean, large, it depends. If it's just allow a separate filter config for, you know, for WebSocket versus not and delay the filter creation, I could probably tackle that. I have WebSocket, sorting out WebSocket as one of my goals of this quarter. Okay. So that sounds like it's pretty straightforward. If we, if we, but this is where I was trying to understand like, do we need to move the TC Proxing code or do we just mix it or kind of what's the plan? Well, so I think if we've already established the upstream connection through some means, then the value we're getting from the TCP proxy is getting to be pretty minimal. I mean, you know, just sent proxying back and forth between two connections isn't that much code. No, right. So the existing router code should work fine for that. It's more, and again, this is just because I'm not super familiar with WebSocket. I feel like inevitably the, at least the router filter is going to have, if we use the router in both cases, the router filter will have to become WebSocket aware to some degree. Like I'm guessing it might have to do the connect or like it might, it might have to know various things. And like, and again, I'm also not sure this is just being not familiar with the WebSocket kind of spec is, is it okay that like we might be using a generic HTTP11 connection pool? Like, could we have used those connections for non WebSocket traffic and then can we upgrade it to a WebSocket connection? Like, is that okay? I don't know. Yeah. So I mean, it's like, if it's okay, then I think it's easy. If it's not okay, I still don't think it's super hard but it's just like, there might be some other cases here where like we might just have to deal with it basically. Okay. So I think, I think I'm willing to take on having a separate configurable filter chain. We're using the HTTP filters because we think they're API compatible and you know, buyer beware, all comment that you shouldn't configure non-WebSocket compatible filters on the WebSocket. I mean, that should be pretty straightforward. Yeah. I mean, right. And as people run into issues of like, hey, my upstream server doesn't support pipeline WebSocket. Can y'all have an option to not do that? You know, we can add it as needed. Right. And like, it might be good just to kind of list out like, what are the, like, what are the gotchas of the current situation? And like that, that would be one that comes to mind where like, I could just see that not, not working. Like if we- I'll comment that one. I'll comment the fact that we have to do the upgrades and downgrades somewhere. Oh, the other thing I'm actually really uncomfortable with this is the other one I wanted to bring up. And again, this may come under like, hey, you shouldn't use this filter for WebSocket is if we, we have to do the upgrade and the downgrade at the last possible point because we don't know if we're speaking HV11 or H2 until we hit the router filter. But the thing is that you're actually literally changing the method. So if you have something like the course filter, which is blocking via method, like what should the method be? Pretty much everywhere else in Envoy, we say everything that Envoy does is H2B2 and then we downgrade the H2B11 style headers on the way out. I feel like for WebSocket, it's, it almost should be the other way where we should treat everything as like a WebSocket upgrade all the way through. Like even on the H2 path, let me get it, say, hey, this is, this is logically a guess with an upgrade to WebSocket, treat it as WebSocket all the way through and then at the last, move it downgrade it to the next. And I wanted to get people's thoughts on that because it's doing twice the work for one of the past, but it ensures kind of consistency when you're going to the filter chain. Yeah, I mean, I don't, I don't have a strong opinion as to whether you like kind of make it one, one or like make it two, but I definitely agree that what has made that code and Envoy so much simpler is that we kind of normalize all of that logic. So I think- Yeah, you can normalize it. Yeah. And like every Rails and Envoy we're normalizing on each two, but normalizing on each two WebSockets is weird because they're like an afterthought. So I can go either way. I don't know if anyone else, Greg, if you have thoughts or opinions on that one. I don't feel strongly about it. The other thing I wanted to bring up is what are we going to do with the changes to the configuration that'll be needed? This will probably end up being not backwards but compatible configuration-wise. Yep, so we'll have to do the deprecation dance. So we say the old style of doing things is deprecated and wait a cycle and then get rid of it. So are we going to leave the old implementation there essentially until the deprecation is finished? I think we'd have to. Yeah, I don't know how you'd make the configuration compatible without that one. The configuration is based pretty heavily on the implementation. I think we'll add the new WebSocket path and then deprecate. The only thing that I could think of, which might be possible, but I'm not sure, is if someone had set the WebSocket true thing on any route, you could maybe make, you could implicitly make a WebSocket filter stack with only the router filter in it and that might work. But that requires more thinking. Yeah. I think I'm just gonna say the old way is deprecated. Once the new one's implemented and then we'll do the dance. That sounds good. Makes sense. Yeah. It's actually using it, by the way. Me? Yeah. We are about to. We're in kind of pre-release testing on some of it. So I'll try to get this done as fast as possible and then you guys can maybe test it out at your own pace and then let me know what else I need to do that does or doesn't work with your existing system. Does that sound good? Well, this is gonna be kind of weird for us because we have something that is, it's remarkably similar to WebSockets, but it's not compliant with WebSockets. And so we're trying to shoehorn it in. Oh, you're already doing some sort of weird dance. Yeah, yeah, we, yes. We have a, we made a network filter that modifies the request coming in to make it more WebSocket compliant and yeah. Oh, also on doing this, I think we should make it a general like, hey, this is an upgrade path, not WebSocket specific so that later on, if we wanna do like connect or whenever we just say this is how we do it, yeah. Yeah. I don't wanna have it be like the WebSocket filter chain and then we have to have it connect filter chain. Maybe people want different ones. I don't wanna support it yet. Yep. Okay, cool. Okay, I will document this, unbug, leave it open for a couple of days for people to discuss, see if anyone has strong opinions on, you know, which way we treat it and start working. Great, that sounds awesome. Cool, did anyone have anything else that they wanted to bring up? A question on issue management. Do we have some sort of a bot integration or else plans to have one for assigning an issue to you if you don't have right access to assigning yourself? You say I would like to assign to me and one of the maintainers assigns it to you. It would be nice to have one. I mean, there's an open issue on bots. If anyone wants to work on bots, that would be great. Would you, on this use case or would you prefer just like ping a maintainer and say, can you assign this issue to me? We would love to have the bot that let you auto assign. If you write it, we will approve it. Yeah, I mean, there's just search for bot in the existing issues and there's a wish list of bots.  So it's possible these things will exist. It would probably be better to even do it as part of the ProBot project in GitHub and then everyone can get it. But that would be awesome. I think there's still the issue that you keep calling the unboil organization, but that can actually assign to somebody who isn't in the unboil organization. Oh, yeah. I think maybe we would just converging those folks who actually regularly would be assigned issues. There wouldn't be an issue. I mean, I don't actually think in GitHub you can assign to someone that is not in the org. So it's like, people have to get added to the org, which I mean, to be honest, like there's no, I just add people to the org who have like shown interest basically, like it doesn't really matter. So that's fine. Cool. Anyone have anything else? Hey, Michael Payne here. I've been trying to compile Envoy on Arch 64 or 64. And I did raise an issue, but just a super short update. It's still not working. So Bazel doesn't support Arch 64 properly. The rules go for Bazel, doesn't support it either. And Lyft's Protok Gen validate won't compile on anything as not Windows or Darwin from what I can see. So the struggle continues. So I'll keep you updated. Fight that Bazel fight. Yes. Very nice beard also. Thank you. I'm going to get straddler and this is what happened. I have to hop off, but if people want to keep talking, go for it. Bye. Thank you. Have a great week.


Hello everyone, so let's give people a couple minutes to join here. If you're already here, feel free to add your name already to the list to the agenda. Yeah, should I am notes here. All right, yes, five minutes past the hour. So let's get started here. First agenda right and there's always is introduction to newcomer so this is obviously something that has totally voluntary but if somebody is new here and just wants to see how to improve for free to do so. Let's move on. Yes, definitely want to just quickly, maybe, because it just said you will be great to have some of the background. Can you hear me. Yeah. Hi, I'm Stefan. I'm a product manager at Spotify. I'm responsible for the recently open sourced project called backstage that we're looking to donate to the CNCF, and I'm here to kind of listen in and you know, understand the CNCF game, I guess. Welcome to have you. Thank you. Do you want to like share a couple minutes to share what backstage is about for people who might not have heard about it yet. Sure, I can do that. You want me to do it now or later on, whatever you feel more comfortable with will have some time today to go over it sound like a big presentation we can scale a deeper presentation that just in case some people are not familiar with it's just a very brief. Yeah, I think a couple minutes at the end. Yeah, I'll just put it just put it in front. So, then let's start with some organizational topics we have still our local discussion, which was now shut down. And then the vote was closed. We should have a winner now which is 21 21 is the kangaroo that seems we have a logo. Let me know couldn't have joined us today. And now with the next cube kind of we meet in person which is hopefully in order. We can then have our own socks. So I also put on the agenda what I want to do more is also have the working groups also present back on the work that they're doing. For those interested in any of the existing working groups they have usually separate meetings where they dive deeper into some topics. And then they give them more time that we can share and that they can share some of their progress here. And also if you want to move discussions to the main sake for free to do so as well. I think with the air gap working group, they were working also with the timing, which I know especially for European folks was quite a bit hard because I think it was Friday 8pm, which is a bit of a tough point there. Okay, so I think we have Mark here right. Yeah. I can give everybody a quick update on the work we've been working on on the operator working group. I don't have a presentation or anything but I'm happy to kind of walk through what we've been doing and where we are. What the conversation is around right now in the current operator working group document. So we've been meeting biweekly starting to get a consensus on a few points of trying to define what a Kubernetes operator is. We've narrowed down a few things I think we have, you know, general consensus. Yeah, definitely linked to the back here. So, here's the doc for everybody. You can pull it up on the screen share that'd be great. So we've narrowed down a few things like you know what what an operator is, you know, it extends the Kubernetes API to provide application domain specific knowledge and an in cluster reconciliation loop. You can definitely see in this document there's a lot of conversation going on still. First recently we've been discussing you know who the target of this document is is it specifically, you know, written through the app developer or is it to the cluster operator at the end, somebody else, or some combination of those those audiences. And there's been some interesting kind of technical conversation around trying to define. Is there a requirement that an operator modifies in cluster resources or does what you know does does a does a controller that's that's modifying AWS or GCP resources does that count as an operator. So trying to like think through the scenarios of what people are calling operators today, and making sure that our definition isn't excluding anything but it's putting a more true definable definition of an operator on it. The calls every every other week you know the documents been going around on the mailing list also there's still like I mentioned a lot of unresolved items in here. We still, I think they did dive into the operator life cycle and whether that's even included as part of the operator definition or not. It's down in this document a little bit more. We're definitely anybody. It's every other Tuesday, starting next week. And we welcome anybody to join or participate in the mailing list. I know there's a few people I've seen in the in the participants list here today that that do join that operator working group call every other week also. That's kind of a quick update as to that for the operator working group. Yeah, thank you. I think the keys. So if you haven't read it, I would definitely give it a week. And the next step here really is to get ahead of the comments and to try the last call and think it's it's good that we're starting to close down on a certain number of definitions that have been sort of hanging around for a while. That question on whether what did I really find interesting is the discussion about doesn't need to modify in terms of resources because we have a couple of examples where we have operators that actually don't modify in terms of resources, which is an interesting use case because in this case Kubernetes is really more the platform for building the automation where the one that that's running is. Make everybody give it give it a read and if you're not joining the meeting and so working with operators would be good. So yeah, because you're here I think it's also good to get some of redhead. This chart up here is the, I think modified one here but to get some some of the right to the piece. Michael, Michael is red hat representative who's participating. Here's a red hatter already. Is there someone from the helm universe participating in the calls. Matt, Matt, Matt does join the calls pretty regularly and he's he's pretty active in it so yeah. All right, so there's some balance in the universe. We've we've the conversation has has, you know, you know, the love the call last week we actually did include does the installation of an operator. Should that be defined as part of the operator definition. I don't know if we reached a conclusion on that but you know that was definitely the, you know, part of that the helm contribution, making sure that we're thinking about the entire life cycle of an operator. Yeah, I like to be the key goal would still be able to get with this document to a level where we can update the current community document patient about the operator pattern. This was the most specific one I guess the goal that we eventually have. So, okay, if you haven't read it yet. I would recommend having a look at it. I think we have nobody joining today from the from the air gap working group. So overall the air get one is an interesting one so they started to look at air gap installations of communities. Because if you can install when he is in an air gap way. There were several meetings there. I talked to them to the working group leads, and in case you are interested. Please declare your interest to it seems like right now people are like, kind of dropping off the meeting so it was a lot of popularity in the beginning. I think people have other work to do as well. But this was the highest ranked request when we started to discuss the last year at CUBE, what people wanted to work on was for this air gap. This is a situation that we wanted to get involved in. We should also get more involved with the telecom user group here as well. Because it came a lot from the telecom industry, who wants to use it for edge installation with very often older air gap installations here. Okay, last item here on the agenda that I have been here. I have an overview follow up we discussed topics that people want us to work on are interested in is like okay what's like next what's on the agenda what should we start working on. And initially I put together this Google Doc was questions that did not result in a lot of feedback honestly it's just only one question there. One one response there. What I didn't want to have here is the link I took a number of questions that we thought are a good starting point for having a discussion with people and just asking them what they want us to focus on. And I just want to take today's just go over those issues and fix the title. Sorry. So one is, do we have like a simple unified way for replication definition. This was something we had always discussed as part of the charter in the beginning, like this ongoing question how do I define what my application in Cuba need to says. And argue okay help can do it but how do you handle them secrets how do you handle third party dependency and services how do you handle these kinds of things. I would at least everybody in here to get started as to provide their feedback on this one here. And the way all these questions are structured. Right now is the general question what do they think is an issue. It's a slight issue. It's a big issue for that we can eventually have a ranking more than the most the most critical topics. And then there is obviously the open and answer for people are using and we deliberately went for open ended here. Don't say okay just people just have like a set of choices that they can make and this is a little bit more work to go through this and then categorize it but honestly I don't expect like hundreds and hundreds of responses. The next topic to that we put on data on the delivery survey is how do you manage dependencies and also especially certain product dependencies or dependencies that go beyond your existing applications like a server is how we even model dependencies which is what it ties into delivery like this service depends on another service how can you express this even how to handle this which ties into the next one like delivering complex applications. Ties ability to do the operating discussion but in general like how can you ship applications of certain complexity with dependencies and how do you model is that they can easily be installed I think this is something that we from our experience put in there is something we see more and more than people are shipping applications in Kubernetes that are more and more complex than they used to be. And still struggling with how to ideally do this. There's other things coming in here obviously as well like how do you for example if you have to define like certain service routes or configure certain things that have to handle third party. That are installed in the cluster whether they are there or not and how you want to. And again, next question here packaging applications to get a. Kind of like off the shelf application experience. This is also something we see like an interesting point how people are handling this today. And something we start to. Yes, that's like one of them. I'm working on the title here. Topic here is, again, how do you kind of get this like off the shelf experience of installing an application. This is just the idea so you have like your application how do you package it how do you ship it like in the old days where you had like your installer and you ship the binary and then install the application how do you really do this. Like on Kubernetes, especially with a lot of the external dependencies like where do you for example put your container images. And then you get them in the registry that is a lot of companies. Also from from our personal experience we see very often issues that people are not downloading from public registry so they have to export it we imported into their own registry which kind of makes the experience for actually using them a bit hard. And that that's what we put the question here how much of an issue. This is for people and how they're doing it today. Then going. Yeah, this is one like how we install applications with specific infrastructure requirements. In some multiple different clusters. Again, same issue you have for example for your application and dependency on a service mesh or certain configurations should be provided for a service mesh. Obviously there is SMI. But there's also other dependencies and different clusters might have different capabilities. So a lot of these questions are the ground interaction that you have that you built the application once and have to install it into multiple clusters, rather than building an application just just for yourself. Again, how do you do it and then the whole topic around chain of custody. Since you also start to see more. Do you even know what you're installing, or how do you even know what you're installing and where these things are coming from and how they are validated. Again, we will be discussing this for like boost that first version year months. If I'm getting a 2000 lines. Manifest file, like what was everything in there, where do the things come from and what are the dependencies that are pulling into my application and how can I be responsible for production environment actually validated what people are installing or what I'm trying to install here. And that actually fulfills my security requirements and other requirements. And then some of the automations operations topics so that I can build certain things in the more. Yeah. Caroline, we will put off the shop application pieces in there. Caroline just mentioned, she's defined concept applications. So let me just fix my type over here. This is okay operators are right now really custom built the question how can I get to more like reusable operational concepts that I want to use and maybe also how, how can I handle situations. I think that we, for example, totally learned when I have to suddenly have run multiple operators at the same time because I'm using multiple infrastructure components. And how do I connect them together say I'm like using a design run using an elastic and using my own application and I'm using a reddit so how can I get like this whole application stack, properly work together with its independent operational components. So this is a set of questions that we have available right now this is a starting point so the reason why I brought it up today is just want to walk you through it would be great to get your feedback and obviously response on the question if you think that there is something missing in those questions that we should ask in people as well. So we can obviously add a couple more questions if you think like okay this question is a bit off topic, and we should refine it please. Let us know as well. So then now opening up for for comments on this one. So, I think this is this survey is great. Who is the survey getting sent to. We have to work with we have to work with the CNDF and reach out, reach out to the end user community and also for the members some have like they and maybe we can have maybe some feedback from the open to comments community and like others have access to their questions as well. I know that we try to get it by the CNDF, but the response rate is usually not that high. What I also would like to do that for new members coming in or putting this on the landing guitar page for for people like if you're here for the first time. You should familiarize yourself with. And also like being able to constantly edit but I think once you're ready, I'd like to reach out to the CNDF or we could get that survey out there. Yeah, if you put it on the GitHub page with a link to it. I think one of the things we can do is we can, may I share it at the on through the Commons mailing lists because there's about 20,000 people there. I don't know if I'm going to answer. But also we could tweet it and socialize it. You know, your own social channels to to get some feedback. Yeah, that that will be great. Obviously we have to CNDF mailing lists as well if they're delivering mailing lists. We can also share it in some of the communities mailing this people to give us feedback. I think there's a number of them so interestingly what I've seen in in the past is that if you get like 100, 200 replies to actually pretty good because people get a lot of service that they would have to fill out and especially if you're not offering them the free t-shirts sometimes less might be able to answer them but we can definitely work on this for me the most important thing is that we all feel comfortable with the questions. So what I would ask everybody just please provide feedback on this one if you think this makes sense or doesn't make sense. So if you miss an important question that you think should be in there or is it something that's unclear. So my plan would be let's give it to a week of a review period. And then we use the CNDF and other channels to distribute it to get some feedback. Sounds good for everyone. We just learned that they're even virtual something right now in Zoom which is kind of interesting. Good. Yeah, so yeah please provide feedback. I'll share the links in our city agenda. The link will also be available in the chat later on as well. So then I think we have through the official agenda for today. So Stefan, we want to share a bit more about your project for a couple of minutes. I can definitely do that. I can't share my video unfortunately because my camera doesn't work apparently. But I'd be happy to share my screen and run through a short. Oh, I have to. I just want to give my colleague Remy a chance to introduce himself he was he was here as well I think as a first joiner areas. Luckily my camera does work so I can. I can sneak in here but thank you everybody for having us I see some familiar faces here. It's great to be here at the SIG. My name is Remy and I'm the newly minted head of open source here at Spotify. We're starting to get more involved with the CNCF both through backstage as well as just generally spinning up the open source program and getting more involved in the community. We appreciate the time today as we sort of go through the sandbox proposal process and we're getting excited about engaging more fully and being around. Welcome. Thank you. Thank you. So I'll share my screen here. Can you all see my screen. Yeah, so backstage what is that. So backstage is essentially an open platform for building what we call like loosely developer portals. I didn't plan to run a demo. I mean maybe we want to come back and do like a longer demo at some point. Yeah, we can do it in the next meeting if you want to do a demo. Sure. Well, I'll just walk you through sort of what it is and what the problem we're trying to solve this and then we can come back later for a formal demo. So, yeah, what is the problem that backstage is trying to solve. Like the infrastructure landscape is pretty complex. I mean if you look at like the CNCF alone it's huge. There's a lot of different open source projects and we have certainly built like our fair share of like internal infrastructure projects internally at Spotify. And that might not be like a problem in itself but if you look at like the, I mean this is just an example of like the overall complexity of the landscape and when you, the problem that we have kind of at Spotify with that we did have was that as we were growing our infrastructure and adding more and more tools and more and more like infrastructure teams building, you know, distinct pieces of our infrastructure. You know, like the overall, you know, the overall thing or the ecosystem of tools started to become super complicated. To a point where actually like our engineers were starting to slow down because they couldn't either like find the tools or the tools that we were building. They didn't really connect with each other. There was no like, you know, connecting tissue tissue between them or like you know every tool was built like for one specific purpose, which is, you know, that's kind of how you build I guess a successful open source project you solve one problem you solve it really well. The problem is though that when you sort of try to put all these pieces together and ask engineers to kind of use all of these tools. And to become kind of experts or at least operators of very many of these different infrastructure things. And we don't necessarily think that an engineer at Spotify should really have to be an expert in infrastructure and underlying tooling to be productive at Spotify. So, what did we do then. The solution like you know, air quotes I guess is here to, you know, what we opted for was to being build one single consistent UI for all of our infrastructure, and that is backstage. So rather than having multiple, multiple kind of infrastructure teams building, you know, their tools as distinct islands of infrastructure. We opted for a model where we would have one central team, my team to build sort of a platform layer, where these different infrastructure teams cannot plug in their infrastructure and made it into a consistent experience for for the end users who are the engineers and developers at Spotify. So essentially, what started to happen, or what we encouraged and was kind of almost a great kind of an app store marketplace for for these tools. And we were seeing metrics as such as like onboarding time which was getting longer and longer for new engineers as we were growing as a company. We started to go down quite dramatically. And we're now at the point where we were like, have to releasing backstage and kind of consolidating and centralizing all of our technical, like all the developer tools as well as technical documentation into one place. So we've actually cut that developer like onboarding time with 55% we measure that like time until you've sent your 10th pull request, which is, you know, not a perfect metric of productivity by any means, but at least something to throw a proxy for, you know, the complexity here that we have been able to reduce. So when we, as we were kind of, you know, talking to other infrastructure teams inside companies similar to Spotify. They kind of or in demo backstage they were like pretty amazed by how many different things we had been able to sort of put into one central place and sort of create a more consistent developer experience and that's when we started to think about like, is this something that, you know, is this a problem that we've solved that kind of isn't unique just to Spotify but maybe, you know, something that other companies are struggling with. And after doing you doing even more kind of, you know, user research or talking to even more teams we kind of decided that, yeah, this seems to be like a industries wide problem. We think that we have a pretty interesting solution to it. So, long term what we are hoping now with releasing backstage as open source is kind of start building a more standardized engineering, you know, UI layer essentially for different infrastructure tools. And with the same kind of plugable architecture so that, you know, developers and open source project maintainers from various project can, can sort of make it easy for people to use their products by building an integration, like a building a plug in as we call it in backstage. And we're hoping that we can create kind of a big community around this. So that's why we're here to like, you know, we're really excited about really eager to kind of get more people contributing to this because we think that if we can create kind of an open source marketplace for like developer experience kind of layer things very wishy-washy. And where I multiple companies kind of, you know, in joining in the community and building these different plugins so that, you know, in a couple of months, you walk up to backstage and we're using Jenkins, we're using Kubernetes, we're using, you know, Grafana, we're using CircleCI, whatever you're using, like there is a plug in for that. And you can just, you know, configure your version of backstage to match the infrastructure that you have. That's kind of the long term ambition we have with the project. And the reason why we're kind of starting to engage with the CNCF because we think we really want to create a good community around this because we don't think that Spotify can necessarily achieve this kind of bigger vision ourselves. I think that's it. Hopefully you have an overview of what we're trying to do. We're off to a good start. Like we have had some excellent response from the community, like more than 200 companies have reached out to us and wanted like a personal demo and very many of them are already trying it out and like, you know, running proof of concepts internally and starting to build plugins and starting to kick the tires of it. So we're pretty happy about the first like couple of months of progress and excited for the future. Any questions? I do have a question. I'm looking for my notes. So you use terms like portal and user interface. Do you consider it mostly kind of at that layer at the UI layer? Because when you talk about developer productivity, you can start to think about, you also talked about platform team. And so is backstage predominantly about creating kind of a, as you said, portal or plugable UI over infrastructure and that is not part of backstage. The way we look at it philosophically at Spotify is that we want engineers to kind of have three interfaces that they primarily interact with. Like first is their code editor where they, you know, write code. The second is like GitHub or similar.   That should all be one system. And that is backstage. That's kind of how we think about. But backstage is pretty unopinionated when it comes to sort of the lower levels. So at Spotify we now have over 130 different plugins.  So backstage is pretty unopinionated. And then we kind of let the different teams own, you know, a plugin and the use case. So for example, we have our CI team. They own and operate like a Jenkins fleet under the hood, but we don't expose that to our engineers. They build a plugin in backstage instead and sort of attaches that to the service definitions and the service catalog that we have. I think it might be related to, you know, the previous conversation about applications and, you know, we have a, we kind of have a model for how we model our software and all that is represented in backstage. So a team, as you can see here, for example, this like the overview page of things my team owns. All of those things are integrated into backstage and then we have the tooling is kind of connected on top of that service catalog, if that makes sense. Yep. Yeah, that's helpful. Thank you. Looks cool. There's nothing like really cool. There's nothing like Kubernetes specific or anything like that. Like we, for example, managed, you know, our transition from our homegrown version of Kubernetes into Kubernetes or GKE actually, you know, without the users kind of changing the interface in backstage. So the infrastructure team responsible for that migration can sort of, you know, abstract the way the differences between, you know, different container systems or even virtual machines or data centers when we were running there, kind of behind this glue layer, if you will. So the way I can imagine this, like, sorry, so the way I can imagine this is like I provide some type of service and I install it and I write a plugin for backstage and then it's available to other people like I have my CI pipeline, I have my machine running type of environment and I provide it and then a developer can say I just want to use this for my project. Is this how it works? Depends on who you mean the developers. Like a, there are different players here, like there's someone, you know, in the platform or infrastructure organization that kind of deploys backstage and provides, you know, a developer portal that has a lot of different tools and those developers. They build the plugins and kind of integrate different tools and environments into backstage. And then you have on the other side, you have the users, right, like the engineers, developers who are building, you know, they're just users on backstage and they use it, you know, for doing any kind of support they need during, you know, product development in general. Does that answer your question? Yeah, I think I have a better understanding. I think it would really be good like to see the next time obviously we can schedule a demo where we can like walk through the workflow for the different stakeholders, what they're doing and that would even help to clarify it more. Absolutely. I do think it's an interesting project to look at. There's a look at that. There was the other initiatives going on. I just wanted to put them into more context. I was in the operator side. We have operator half, which is very focused obviously on operators and how you can install them, manage them, having the life-sector management in there. This is definitely going in a bit of a different direction. The CNCF was or is already working on a different project where they expose, right now it's mostly hand charts, but the plan is to go further with the artifact hub, in case you haven't heard about it, that might also be interesting to look at. Just also from, okay, how do you relate to these other projects? And if there's an overlap, which is not an issue, so it can obviously be an overlap anyway, but just that people are put into context. But I can see it. So a question from anybody else here in the room? Okay, maybe then we really scheduled this for a demo in two weeks from now if this is fine for you, then we can like really see the inaction and there's usually when more questions come up. Absolutely. One short note is just walking people through, but I think it's just helpful for people that have some sort of understanding here. I mean, if you're, you can't wait for the two weeks. There's a microsite that we have a backstage.io where we have like a demo section, a couple of YouTube videos showing how this is used internally at Spotify. Yeah, I feel free to also post this in the Slack channel. So if people are interested, there's usually more people on the Slack channel as well that are also participating in the meetings, so feel free to also post it there. All right, this actually gets us on top of the 45 minutes for this meeting today. So thanks everybody for joining again for the next time. Please have a look at the questionnaire so we can send it out and schedule a schedule sending it out via the different channels which we have. So looking forward everybody's feedback and also we'll put them backstage demo on the agenda unless somebody has anything else they want to bring up today. All right, then enjoy the rest of your day. Hopefully. Thank you, YouTube. Thank you very much. See you next meeting. Bye.


Everyone at this point is kind of on their own, making ready for being able to reuse, especially masks, but also things like gowns and plastic sheets to be able to keep our barriers when we're doing difficult procedures with patients. Doctors around the country, such as Denver-based ER doctor Case Newsom, are running dangerously low on the N95 mask, which protocol says they should wear and then dispose of every time they walk out of an infected patient's room. So they're reusing the same masks repeatedly. My colleagues are busy at work creating UV decontamination ovens on their own because those are expensive and difficult to come by, but easy enough to produce. Several of them have in fact learned how to sew so they can make their own masks if we run fully out. The federal government estimates that medical professionals will need 3.5 billion masks if the most dire projections are borne out. The U.S. had about 1% of that number on hand at the beginning of March. Charities and major corporations have donated masks to hospitals and manufacturers like Honeywell and 3M have stepped up production. New York Governor Andrew Cuomo has asked President Trump to use the Defense Production Act to force companies to start making masks, and yet official channels likely won't come close to meeting the needs of healthcare workers so some technologists are taking matters into their own hands. But will government officials adhere to existing regulations and slow down these efforts? And if we could manufacture enough masks for the entire population, would it be possible to hasten the end of the extreme social distancing crippling our economy? We are a group of engineers, entrepreneurs, and problem solvers focused on prototyping and manufacturing N95 masks domestically. Matt Chisholm is a spokesperson for the Open PPE Project, which is developing a protocol for production of N95 grade masks, which experts believe provide fairly reliable protection against COVID-19. They're planning to open their own factory in Michigan and to develop a manufacturing blueprint that anyone can use. Masks don't seem like they would be an extremely complicated product to manufacture, so what have the biggest and most surprising challenge has been so far in undertaking this? One regulatory, the regulatory state. Two, some of the materials in the beginning, it just took some time to find the right sources for them. One of the biggest inputs into our mask is a material called melt-blown polypropylene, but we have identified someone who can provide that to us. Surgical masks require FDA approval, though the agency relaxed its guidelines in late March. The National Institute of Occupational Safety and Health, a division of the CDC, regulates filtration mask factories. According to Chisholm, an official with the agency told his team that it will take 45 to 90 days to get approval for a new mask production facility. That poses some challenges for the current crisis we're in. You could theoretically end up with 45 to 90 days worth of supplies that are in a warehouse instead of out on the frontline saving lives. One thing we've recommended is that we allow universities who have the capabilities to do testing on masks to at minimum maybe be involved in this process to give the approval on some of these N95 masks and other personal protective equipment. Meanwhile, 3D printing enthusiasts are side-stepping regulatory approval by teaching people how to make their own masks. The DIY mask approach has taken off in the Czech Republic in particular where surgical masks sewing efforts are being coordinated over the internet by providing instructions, tips, and mapping facilities in areas where masks are most needed. The CDC is stating that we're to be using bandanas if it comes down to it. I think I would certainly trust the capacity of any physician or nurse to be able to at least visibly inspect the quality of the material that they've been given to be better than a single ply T-shirt or cloth fiber. I understand that it's not a perfect solution, but that being said, anything I think would be better than the sort of last resort of people having to formulate their own. How difficult would it be for doctors who still would prefer something like that to a bandana to bring that into a hospital to protect themselves? Would the hospital, you know, stop them at the door and say, you know, no unauthorized masks or would it still potentially be of service? It's really hard to question a physician if they're bringing in something that they've done their research on to know that it's an adequate level of protection. You cannot look at every single person's practices at keeping themselves clean and not infecting people. So the fact that they're effectively already running out actually lends a little bit of an opportunity for these sort of, I guess you could call it like gorilla industry actors to come in with new novel devices. Some say that ubiquitous mask wearing could make it safe to end extreme social distancing, but public health agencies have issued conflicting information about their efficacy. If you do not have any respiratory symptoms such as fever, cough, or runny nose, you do not need to wear a medical mask like this one. Mask alone can give you a false feeling of protection and can even be a source of infection when not used correctly. On February 29th, the US search and general urged the public to stop buying masks, claiming they're ineffective in stopping the transmission of COVID-19, and could even increase one's likelihood of catching it. The CDC and WHO have recommended mask wearing only for those in direct contact with infected individuals, but critics say this is inaccurate and that public health officials may have purposely spread misinformation to discourage a run on masks, making it even harder for doctors, nurses, and first responders to obtain them. Mask wearing is widespread in Hong Kong and Taiwan, which seems to have controlled COVID-19 without prolonged lockdowns. Hong Kong public health officials have called for mask wearing on public transit and in the workplace. There's evidence that masks help stop the spread of the flu. And though strong evidence that face masks prevent respiratory infections is still scarce due to a lack of rigorous study according to a March 2020 paper published in the Lancet, there is a chance that community transmission might be reduced if everyone wear face masks. Oxford researcher Elaine Fong co-authored that paper. We should prioritize the healthcare workers first, but I don't think this should be the rationale to tell the public that face mask is not effective. We highlighted the distinction between the absence of evidence and evidence of absence. How would you rationalize in that case a universal face mask policy? For coronavirus, there's some evidence showing that people who have been infected but have not have the symptom onset could transmit the virus to others without even knowing that. In Asian countries, it's more likely to be a civic duty for the people to wear the face mask. We think the universal face mask policy during the pandemic could help to prevent the stigmatization on people who have wear the face mask if supply permits. Probably not a place to speculate on the role masks will play beyond medical personnel. After we beat COVID-19, I'm not sure what the demand is going to look like for masks. I assume there might be more people who wear them when they're sick. We weren't prepared for this. We need to get back to good and make sure we can arm our frontline personnel equipment we need. We also have to be ready for what any pandemic in the future could bring and manufacturing readiness could really help that. And Newsom asks that anyone with extra N95 masks or other essential medical gear donate them to medical professionals to help adjust to this new reality. It's the nature of our work that we are touching patients that have respiratory problems and we really would benefit from those masks. I'm literally witnessing colleagues of mine learning how to hunker down and like do protective measures. I mean that I didn't learn any of that in my residency you know how to decontaminate your own masks and stuff. The fact that this is all happening point of care when the need arises goes to show the level of unpreparedness.