We continue on today with Chapter 14, The Test of Truth. Yet the essential thing is learning that you do not know. Knowledge is power, and all power is of God. You who have tried to keep power for yourself have lost it. You still have the power, but you have interposed so much between it and your awareness of it that you cannot use it. Everything you have taught yourself has made your power more and more obscure to you. You know not what it is nor where. You have made a semblance of power and a show of strength so pitiful that it must fail you. For power is not a seeming strength and truth is beyond semblance of any kind. Yet all that stands between you and the power of God in you is but your learning of the false and of your attempts to undo the true. Be willing then for all of it to be undone and be glad that you are not bound to it forever. You have taught yourself how to imprison the Son of God, a lesson so unthinkable that only the insane and deepest sleep could ever dream of it. Can God learn how not to be God? And can His Son, given all power by Him, learn to be powerless? What have you taught yourself that you can possibly prefer to keep in place of what you have and what you are? Atonement teaches you how to escape forever from everything that you have taught yourself in the past by showing you only what you are now. Learning has been accomplished before its effects are manifest. Learning is therefore in the past, but its influence determines the present by giving it whatever meaning it holds for you. Your learning gives the present no meaning at all. Nothing you have ever learned can help you understand the present or teach you how to undo the past. Your past is what you have taught yourself. Let it all go. Do not attempt to understand any event or anything or anyone in its light, for the darkness in which you try to see can only obscure. Put no confidence at all in the darkness to illuminate your understanding, for if you do you contradict the light and thereby think you see the darkness. Yet darkness cannot be seen, for it is nothing more than a condition in which seeing becomes impossible. You who have not yet brought all the darkness you have taught yourself into the light in you can hardly judge the truth and value of this course. Yet God did not abandon you, and so you have another lesson sent from Him already learned for every child of light by Him whom God gave it. This lesson shines with God's glory, for in it lies His power which He shares so gladly with His Son. Learn of His happiness which is yours, but to accomplish this all your dark lessons must be brought willingly to truth and joyously laid down by hands open to receive, not closed to take. Every dark lesson that you bring to Him who teaches light, He will accept from you because you do not want it, and He will gladly exchange each one for the bright lesson He has learned for you. Never believe that any lesson you have learned apart from Him means anything. You have one test as sure as God, but I wish to recognize if what you learned is true. If you are wholly free of fear of any kind, and if all those who meet or even think of you share in your perfect peace, then you can be sure that you have learned God's lesson and not your own.  The absence of perfect peace means but one thing. You think you do not will for God's Son what His Father wills for Him. Every dark lesson teaches this in one form or another, and each bright lesson with which the Holy Spirit will replace the dark ones you do not accept teaches you that you will with the Father and His Son. Do not be concerned about how you can learn a lesson so completely different from everything that you have taught yourself. How would you know? Your part is very simple. You need only recognize that everything you learned you do not want. Ask to be taught and do not use your experiences to confirm what you have learned. When your peace is threatened or disturbed in any way, say to yourself, I do not know what anything including this means and so I do not know how to respond to it and I will not use my own past learning as the light to guide me now. By this refusal to attempt to teach yourself what you do not know, the guide whom God has given you will speak to you. He will take his rightful place in your awareness the instant you abandon it and offer it to Him. You cannot be your guide to miracles for it is you who made them necessary. And because you did the means on which you can depend for miracles has been provided for you, God's Son can make no needs His Father will not meet if He would turn to Him ever so little. Yet He cannot compel His Son to turn to Him and remain Himself. It is impossible that God lose His identity for if He did you would lose yours and being yours He cannot change Himself for your identity is changeless. The miracle acknowledges His changelessness by seeing His Son as He always was and not as He would make Himself. The miracle brings the effects that only guiltlessness can bring and thus establishes the fact that guiltlessness must be. How can you, so firmly bound to guilt and committed so to remain, establish for yourself your guiltlessness? That is impossible. But be sure that you are willing to acknowledge that this is impossible. It is only because you think that you can run some little part or deal with certain aspects of your life alone that the guidance of the Holy Spirit is limited. Thus would you make Him undependable and use this fancied undependability as an excuse for keeping certain dark lessons from Him. And by so limiting the guidance that you would accept you are unable to depend on miracles to answer all your problems for you. Do you think that what the Holy Spirit would have you give He would withhold from you? You have no problems that He cannot solve by offering you a miracle. Miracles are for you and every fear or pain or trial you have has been undone. He has brought all of them to the light, having accepted them instead of you and recognized they never were. There are no dark lessons He has not already lightened for you. The lessons you would teach yourself He has corrected already. You do not exist in His mind at all. For the past binds Him not and therefore binds not you. He does not see time as you do and each miracle He offers you corrects your use of time and makes it His. He who has freed you from the past would teach you are free of it. He would but have you accept His accomplishments as yours because He did them for you and because He did they are yours. He has made you free of what you made. You can deny Him but you cannot call on Him in vain. He always gives His gifts in place of yours. He would establish His bright teaching so firmly in your mind that no dark lesson of guilt can abide in what He has established as holy by His presence. Thank God that He is there and works through you and all His works are yours. He offers you a miracle with every one you let Him do through you. God's Son will always be indivisible as we are held as one in God so do we learn as one in Him.  Listen in silence and do not raise your voice against Him for He teaches the miracle of oneness and before His lesson division disappears. Teach like Him here and you will remember that you have always created like your Father. The miracle of creation has never ceased having the holy stamp of immortality upon it. This is the will of God for all creation and all creation joins in willing this. Those who remember always that they know nothing and who have become willing to learn everything will learn it. But whenever they trust themselves they will not learn. They have destroyed their motivation for learning by thinking they already know. Think not you understand anything until you pass the test of perfect peace. For peace and understanding go together and never can be found alone. Each brings the other with it for it is the law of God they be not separate. They are cause and effect each to the other so where one is absent the other cannot be. Only those who recognize they cannot know unless the effects of understanding are with them can really learn it all. For this it must be peace they want and nothing else. Whenever you think you know peace will depart from you because you have abandoned the teacher of peace. Whenever you fully realize that you know not peace will return. For you will have invited him to do so by abandoning the ego on behalf of him. Call not upon the ego for anything it is only this that you need do. The Holy Spirit will of himself fill every mind that so makes room for him. If you want peace you must abandon the teacher of attack. The teacher of peace will never abandon you. You can desert him but he will never reciprocate for his faith in you is his understanding. It is as firm as his faith in his Creator and he knows that faith in his Creator must encompass faith in his creation. In this consistency lies his holiness which he cannot abandon for it is not his will to do so. With your perfection ever in his sight he gives the gift of peace to everyone who perceives the need for peace and who would have it. Make way for peace and it will come for understanding is in you and from it peace must come. The power of God from which they both arise is yours as surely as it is his. You think you know him not only because alone it is impossible to know him yet see the mighty works that he will do through you and you must be convinced you did them through him. It is impossible to deny the source of effects so powerful they could not be of you.  And from the workbook lesson 115 for morning and evening review salvation is my only function here. My function here is to forgive the world for all the errors I have made for thus am I released from them with all the world. My part is essential to God's plan for salvation. I am essential to the plan of God for the salvation of the world for he gave me his plan that I might save the world. On the hour salvation is my only function here on the half hour. My part is essential to God's plan for salvation. Amen.


I have to say, before we begin, all my favorite people are here, all of them, in one room, including Jerry. So this is an auspicious event. So I do want to thank the Cooper Hewitt and Rookie and Cara and Kim for having us here and all the work that they've done to get us here and make us so comfortable. So we're here today to celebrate Jerry and her lifetime of quite remarkable creative production. So Kat Katmere, who is unfortunately at her sister's wedding, not unfortunate for her, unfortunate for me, because it's usually the road show is the three of us. We call it our great dog and pony show. So Kat and I, with two other special guests here, Diana Murphy and Jordan Steingart, started this project together. It seemed to us that recognition of Jerry among design iconoclasts had gone missing. We wanted to put Jerry back in the public eye, where she definitely belonged. We went through a treasure trove of work, drawings, sketches, models, photos, publications and letters that luckily Jerry had held onto. Fabrics, lots of fabrics, clothing that somebody modeled. So here's the book right here. So the book is 224 page volume, brimming with images, organized into three sections. So the first section, early years, covers her education in Memphis, followed by MFA studies at Cranbrook Academy of Art, where she was immersed in an ethos of design without disciplinary boundaries. It also includes the beginnings of her career in the styling division of General Motors and her move to Los Angeles to become director of interiors at Victor Gruen Associates. Section two focuses on the main part of Jerry's career. It starts in 1964 when Jerry formed her office, Jerry Kavanaugh Designs, in a studio space that she shared with architect Frank Gehry and Greg Walsh. It includes the multitude of diverse projects that she undertook from store interiors, offices and residences, textiles and papers, wrapping papers, furniture, exhibitions, toys and products to graphics and so much more. Third and final section, Jerry's world, chairs her more personal work, the delightful handcrafted objects, her own homes that were playgrounds for ideas, and finally her stunningly beautiful and colorful still life drawings. Throughout the book are lively anecdotes from those who have worked with Jerry and have often become lifelong friends. Their stories help to give the readers a better sense of Jerry's indomitable personality. Also included throughout the book are few of the many, many articles about Jerry and her work, including ones that appeared in the LA Times, House Beautiful and Cosmopolitan, as well as interiors and Women's Square Daily. Adding fun and flair throughout the book are numerous delightful photographs of her many huge personality. So that's the book, but as we have Jerry here today, we have a great opportunity to talk to her about some particular areas of her work and some dominant motifs. So what we're going to talk about today is interiors, textiles and papers, vernaculars and craft, and finally flowers and nature.  The presentation and discussion will be about 40 minutes and then we'll have about 10 minutes or so for your questions. So save those up. So we'll start off with interiors. In 1952 you joined General Motors. Your work there included designing trade shows and model kitchens for Frigidaire. Then in 1960 you moved to Los Angeles to become head of interiors at Victor Gruen Associates, as I just mentioned. It was there that you were introduced to the culturally momentous Joseph Magnon stores, known for shifting the shopping experience as you put it from chic chic to chic fun. In 1964 you went on to form your own office, Jerry Kavanaugh Designs, designing even more Magnon stores as well as residential and office interiors, among so many other things. You've described the period to me from the 50s to the 1970s or so. When you did this work as a particularly wondrous period for design, just one example is the project that you did for GM's feminine auto show. The exhibit there you put 100 live canaries in net towers. So that seems pretty magical. So can you describe why this period was so remarkable for you? Well, it was a remarkable time in our country and it was a remarkable time in Detroit where really part of modernism started and that was because of Cranbrook. Associated with that was the Sarinan office, the Victor Gruen office and the Yamazaki office and the Detroit Art Institute plus Alexander Charard doing work out in Grosspoint and forming his own office. I just thought that was the normal world. Now I'm serious about it but it was very lively and there was a lot of exchange among these offices and there was such a curious audacity about it and you wanted to know what everyone else was doing. And you followed up on it. Besides, there were a lot of interesting folk art stores at the time. And of course this was all sort of paved away by Alexander Charard living in Grosspoint and establishing his own office. But then he also worked for Sarinan so there was an interplay of these different offices. And the Gruen office who really invented the shopping center produced so many jobs for people. I think half a town and half a Los Angeles supported people by shopping center. It was very innovative and a lot of innovative work that then spun off into major planning work. And this was all interlaced with Yamazaki's office, Sarinan's office and even the General Motors Tech Center which a friend of mine here has recently designed a book or written a book and it's coming out in September. And it's called Well The World Tomorrow Meets Today. And so I encourage you all to buy it. But that was the flavor of what was happening at the time. And I don't know of another area in the country where this was happening. So my next question was actually going to be about the difference in the design scenes between Los Angeles, Detroit and New York. Yes. Do you want to say something about that? Well, you see I got criticism from people saying that I was going out to the West Coast and I was going to be working sort of for the enemy. They were crazy and they thought most of the people back here, I'm sorry to say, thought the West Coast was sort of next to China because of the cartoon that was in the New Yorker about it. But it has now changed and people now want to come out and we say, please don't come out. We're too crowded. So how would you describe what the differences were between Los Angeles, Detroit and New York? Well, there was a permit in the Detroit area that I don't think has ever been replaced. The New York area was sort of like, I'll tell you a funny experience that I had. And that was there was the head of UCLA was Franklin Murphy, who was a real mover and shaker in the LAC when this is after, this is way after I didn't have anything to do with it. But one day I saw Franklin in the sculpture garden at UCLA because I was walking my dogs. And I knew him and through Hallmark because he was on the board of Hallmark, which I did a lot of work for it one time. And I said, Franklin, what's the matter? You look really gross and you're grumpy. And he says, it's that goddamn track thinking. And I looked at him and I said, what do you mean by track thinking? He said, oh, yes, you do. It's Boston, New York, Washington, Philadelphia. And it's all they can think is on that track and nothing else. And I understood that because then I use that in lectures in relationship to color because I grew up in the South. And that was a different viewpoint. And also I knew a lot of people in Chicago. And that was industrial thinking. And you come out across the West and you go over the mountains and you came to the West Coast. And it was a freer time of thinking. And as I talked at a conference several years ago with my dinner partner, and it was one of Neutra's sons. And I asked him what he thought was the difference. And he said the West Coast was more flexible. And I still think that. I would agree with you. More flexible. So you would also kind of set up this next question, Jerry, which is about the other thing you and I have talked about was about retail design. And you had mentioned to me that you and a few others, including Frank Gehry, actually found retail design exciting where a lot of designers look down their nose at it. Well, that was retail. And there was goes back to an old English term, that's trade.  As far as I was concerned, and a bunch of nonsense for some of the people that I knew and certainly was for the Grongan organization, what they did. So what was exciting about it? It was there were more things that were looser in one sense. Not bad, but looser in thinking and experimental. It wasn't what I call box thinking. And there was a lot of box thinking. And in some ways it was good. In some ways it was bad. And that was because of the Eastern schools of thinking. And I mean that at Yale Harvard and MIT. And that was all out of a certain kind of what I call box thinking. And particularly with color, and this is what my human cries today, is that it's not taught in architectural schools at all.  And that's it. And I mean, invariably, if I get a lecture, they say, oh, some architectural researchers, they say, what's the best system for working in color? And I say, yes. So Jerry, we're going to go on to this next section here. We're going to talk about textiles and papers. So you started working with textiles and papers when you were quite young. And your devotion to textiles and papers has lasted throughout your career. In the mid-70s, you started your own line of textiles. How did you decide to start Geraldine Fabrics? Where did the ideas for the different patterns come from? Well, the I, M, and I go oranges, which we showed. I lived in the country of oranges. And I have an orange tree in my own backyard. A lot of people have orange trees, avocado trees, lemon trees. So I tried to develop it based on things that were sort of indigenous to the area. So the patterns that are in this line, that's where they came from. So how did you imagine they'd be used? Well, that's easy. I mean, there are some any ways that you can use them. And that was the idea that each person and potter could use it in an inspirational kind of way. It would inspire them to do it because they were lively and colorful. And when I came to Southern California, I was overwhelmed with color because you would see whole mountains in yellow. You would see whole mountains in lupin, open truth. And so that impressed me very, very much in relation. An ice plant. I've never seen an ice plant before. But there is now a term called highway ice plant pink. Yeah. It's this very fluorescent pink. Yeah. So when it's in bloom, you're just like everything is glowing. Yeah. And you'd see a cascading of down a mountain. I never saw a color like that back here or in the south. I saw a lot of cotton because I was raised in cotton. But that was all white. But to come to California and see masses, I mean, mountains of it just overwhelmingly. So one particularly significant and long-term client was Isabel Scott fabrics. Yeah. Here we go with some of the Geraldine fabrics. So you started working for them in the late 50s. And your most significant project for them was the Corio silk line of e-cat fabrics that you developed in the late 1960s in South Korea. It was a really complex project. Not only did you design the e-cats, but you were also involved in setting up the factory that would produce the special weaving technique. Can you describe how unusual this project was? Well, to me, it wasn't unusual. It was just the way my mind thought and the challenge that was presented to me. And so I took up the challenge. And I had a very good, interesting time. I even got to play the palace in Seoul. And that was the Korean prince. And princess lived in the palace. And he was a prince who had to work to support his grandmother's ladies in waiting. I'm not kidding on this. And he was an architect. And he was under... Well, first of all, I'm getting off on too many other stories, but the experience of Corio silk, which is one of the patterns called Chuncheon mountains. And the mountains in Chuncheon went like this, like that, out of the ground. And that was something I based one of the designs on. Then there was Magpion. I was so overwhelmed at seeing Korean ceramics, because I had been brought up basically on Japanese ceramics. But then I began to see Korean ceramics. And I said, well, I know where they got it in Japan. It was from the Koreans. And there is one to design Magpion that's based on... And then there was... Chevron was based on some paintings on a ceiling in a temple. So it all fitted in. And Corio clouds was based on a badge. Because the Koreans wore badges to describe what they did. This was in the government. I keep getting this. I don't mean to. I can't help talking with my hands. Yes. Anyhow, it all was on that. And it was a fabulously interesting experience, because even with color, like there was one yellow that was based on a plant that blooms in the spring. And it also blooms in the south. And I based a whole part of the color line on that yellow. But you had to... I'm just so curious about having to set up the production so that it could do the e-cap. Well, that was my secret. Oh, I see. We're not going to hear about it. It really is my secret, because nobody has done it. And it might be revived again in the Philippines. I'm hanging by my eyelashes. Because there is a lady who was from the Bay Area, and she came across by herself. And the Corio silks. And the equipment was sold to from this Korean to another Korean to another Korean. Then she bought it and took it to the Philippines. And she is now in the process of setting up a factory outside of Manila. And if that gets done, there will be a revival of some of those prints. That would be remarkable. It would be remarkable. I shouldn't even be telling you this, because I'm superstitious. So the other thing I wanted to ask you about, Jerry, is something I think you've also talked about, which is that using fabrics, and I'm assuming wallpaper as well, architecturally, can you talk about how you've thought about them and used them to change a space? And, well, we've been doing this for eternity. As long as it's been there, it's been fabrics. You know, there was somebody recently who was telling me about an incoming exhibition about the interiors of pyramids.  Because textiles were also a symbol of wealth because it took so much to do and make them. They're not tried by any means whatsoever. The process of doing textiles in Dorothy of Noel is here. And she could tell you oodles about that. And it's very interesting. It is not just a piece of fabric. It's much more than that. If you know the process, you would not have that attitude. It's a miracle. Not only a miracle. It's one of the heights of civilization is textiles. If you think of the Peruvian textiles, the Andes textiles, and other textiles throughout the world, they're ingenious. And they now know that the textiles, the development of textiles, predates the Bronze Age. Because they have found evidence of it in fabric merged in clay. And there's a lady who's formerly connected with Occidental who's done a lot of research on that. Fascinating. It is fascinating. It is so fascinating.  I love that in color. And there's so much in relationship in the history of color. How color changed from a gray world to a bright world. And how Elizabeth, Queen Elizabeth commissioned the Buccaneers to not steal gold, but to steal heartwood from what we know as the British Honduras. Because the center of heartwood is a very red bark. And it was a stable red that could reach England. If that goes along with Coach Neal. And vegetables. That's another thing. Which people are reviving. It's interesting. It's very interesting. I'm very interested now right now in doing avocado pink. You wouldn't think of avocados being associated with pink. I want to see that. Yeah. Well, I've been playing with it with a neighbor of mine. And so I'll say, save your avocado seeds, please, for me. So Jerry, I want to ask you about something that you also mentioned at the beginning. Which is vernacular and folk. So you have a passion for vernacular design. The language of the everyday. And what's been referred to as folk art. More complex. The passion. This passion was the subject of Home Sweet Home. American domestic vernacular architecture. An exhibition that was conceived by you and co-curated with the architect Charles Moore. Charles Moore. Yes. You also designed the exhibition Islands in the Land. Which featured the traditional objects of Appalachia. And the Rio Grande Valley of New Mexico.  And many of the products you've made seem inspired by handcraft and by folk. So first of all, can you describe the difference between works of design, craft, and folk? In your opinion, is there a difference? No, I don't see any really difference. And one of the things that really sort of tied this all together was last year, in the New York Times, it was January 8th, there was a review of a book called Craft C-R-A-E-F-T. That's the original spelling.  But it's not, it means making the very best. And a lot of what you call folk art is making the very best out of what is available. So it's not itsy-bitsy crafty stuff at all. It has a much higher meaning. And when my study of vernacular architecture, when you see the processes of how some of the buildings were built, because it was just what was available and they made the best out of it, that's craft. So you mentioned your childhood, which is when it seems like this love of vernacular started. So you've talked about like noticing things in your neighborhood in Memphis, the way homes were built. So can you talk about the things that you... Well, I designed a chair which I have not really successfully gotten anyone to produce it, but it's based on the details of the neighborhood that I lived in in Los Angeles, which was built in 1886. And they were all either craftsmen houses or pattern bookhouses. And this is the details of that chair. So it had a strong influence. And some of it is just a vernacular architecture. Sorry, I didn't continue more with that because every once in a while, I'll find something that's really interesting that I didn't know about when I was doing the exhibition with Charles Morton. We did do a book on the exhibition, which was in 13 different vineyards in Los Angeles. And Ridsotley published our book on it through the Craft and Folk Art Museum. And it sold out in six months. And but Ridsotley would not give us that to go into the second printing because they did not want to give us the same royalty, so it didn't get published. And now it's a collector's item. So that show is really remarkable. Can you talk about the role of the different individual exhibitions? And then there was the conference at UCLA. Yes, we had a symposium. It's sort of like we put out the word and people wanted to do certain sections of it. There was the front porch, which the front porch really is an American vernacular situation. It stemmed out of the so-called the work porches, but on classical buildings with the columns, and there was a little space in between. But in this country, it developed to be the front porch.  It's more than just a piece of architecture, it's a means of communication. So a few things that I do want to mention about this show. So it's back behind us here. So it included things like the kinds of like playhouses that children build and all the weird things that we especially see in Los Angeles done with Stucco. Yeah. So here are more images, the children's architecture over here and one of these odd homes with turrets that we find in Los Angeles. So I guess I want to know about what these individual shows were that were taking place. Well, one of them was this one and this was, oh no, that's some other exhibition. Yeah. Well, it goes back to sort of like it's almost a car mentality in the aspect that you're free to do anything. That's actually what the car symbolizes in Southern California. You can go anywhere nobody stops you. We didn't have a subway system like you all had earlier. Or Paris. Paris had a subway system way, way before anybody else. But were each of these exhibitions different? Yes, each one of them was different. And we brought in people from many disciplines to talk about the existence of the symposium at UCLA. We didn't get to document it like we wanted to because there wasn't enough funds around, which is typical of a lot of exhibitions where it wasn't enough. And nor was there mentality for people to understand why we needed money to develop it. So the Islands in the Land exhibition. So this is the, you want to describe that briefly. And then talk about what you wanted people to take away from that exhibition. What do you mean take away? So when they saw these very beautiful artifacts, what did you want people to think about or know? Well, it was really based on a book called Islands of the Land. And it was, and I can't think of this name right now. Carrie McWilliam said who it was. And Eudora Moore took that idea and took it to Appalachia area. And the Pueblos is two separate places, which had a lot of artifacts done by artisans. And the Smithsonian had a lot of things that she borrowed.  Square feet, whole wing of the Pasadena Museum. And there was about 2,000 objects in the show. And they were from the Pueblos and the Appalachia. And those things were, again, made out of something that was valuable and made beautiful. It's the same way in cooking. It's not much different. You find the best way to do a cucumber soup, because that's what you had, you know. It's an ingenuity. So, Jerry, we're going to go on to our last section here on flowers in nature. So you've done a number of projects in which, oh, so flowers in nature have been a motif in your work from the beginning. They dominate both your professional and personal work. Coincidentally, all this work also shows your accomplishment in a wide and vast range of media from textiles, books, illustrations, mosaic murals, sculptural elements, wallpapers, rugs, applique, painting, that's up here. You can see it there. So you've done a number of projects in which you've supersized creatures, birds, flowers, butterflies. So what's the magical fantastical world that you're imagining these objects in? I never know until I start it. But it's going to turn out I get an idea, and then I start sort of developing it. And I just can't help it. The zinnias of that table really relate to being at my cousin's place in Arkansas. We're in the summertime along one of the fences. My uncle insisted that we plant zinnias. And that was our job as kids to make bouquets in the house of zinnias. Yeah. And so it was things stuck in my head. I can't help it. It just sticks in my head. And I feel like I want to do something. And sometimes I just feel like I'm sort of like a conduit, or I don't know who it is. But it seems like there's an incredible amount of joy in making nature supersize. Well, I have a good time. I like what I do. We can tell. Yeah, I really like it. And sometimes it's like, well, what are you going to do when you retire? And I look at them retire. No, no way. There's too many good things to do. I just hope I live long enough to do them all. And even at that, I'll probably be saying, wait, one more time. Yes. So that's a good lead into my next question, which is, you've worked in so many media, like you'll do anything, you know. And sometimes you're working in collaboration with others. Yeah. Sometimes you're making the things yourself. And so I wanted to know about the Kutzwa that this takes to feel like you can do anything. Well, I don't care necessarily if everybody receives it. I just have to do it. And I say to students all the time, if you have an idea, do it. Because eventually you might have to wait five, 10 or 20 years. Somebody will come around and recognize. But just do it. Work. So can you talk about, you know, how you sort of like would figure things out or you'd figure out who to work with? No, I just sort of like in a way, I'll read anything. I'll read a soup again to figure out something. But it'll stay with me. And I just, in a lot of ways, I remember too many things. But it's memory and curiosity. I think the best thing for a designer is to, an artist is to have curiosity. Yeah. Yeah. And it's a very interesting word when you get into it. Is there, is there anything that you started to get into and you felt like you were in too deep? No. It's sort of like, if you do, it's sort of like cooking.  But you just, you know, and you nobody has to know about it. Let's reset that. So some of the, but you have done a lot of things. Some of the things that you've done have been commissions. Yeah. And some of the things you've just instigated yourself. So was like, what gave you the sense that you could like put your own resources forward? And I know with the textiles that you did, Geraldine Fabrics, that that wasn't a financial success. But how was it successful for you? The things that you've done independent. It's been successful to me later, but it's taken 30 years. I mean, like it wound up at the beginning of this lecture. It's now in the Cooper Hewitt. That gives me great pleasure to say, okay, I really wasn't wrong. And somebody finally recognized it. And so, and I'm sure that happened to a lot of scribes. Doing an illumination of books, you know, but we don't know about that because nobody left us any notes. But there's, I think, a lot of that in the world. So here's the question, Jerry, and this will be my final question. Then we can open it up for other people's questions. So when you sum up your entire career, what do you feel are your most important contributions? That's a hard one, but I kind of sum it up in a way when my father first took me to art school when I was eight years old. And he said to me, I don't expect you to do anything with this, but I do expect your life to be enriched, and it has. It's been enriched in many, many ways. And a lot of the people in this room, I am grateful that they were in my life to help me enrich it. Thank you, Jerry. That's a good way to end our conversation. But Jerry, do you want to mention some of the women who were in Los Angeles? Well, there are five women that should be written about one is June Wayne who started the Tamron Workshop. It was the most successful of the Ford Foundation grants, and she revived lithography. There was Edith Wiley who started the Craft and Folk Art Museum, which is now called Contemporary Craft Museum. There was Eudora Moore who was very much instrumental in California design, and there are, I think, six or eight books that are still out on California design, and the two, what we call the Black Bandits or the Crazy Ladies of Los Angeles. And that was Sister Carita and Sister Magdalene Mary. And these women, five, six women, and there was another one, Pat Altman, who was one of the brains of LA, but nobody wrote about them. And somebody should do it. You don't take a lot of work because there are not very many of us left that can tell the stories. And one who's recently departed is Deborah Sussman. Yes, Deborah. I'll tell you a funny story on that, and this would answer your question, is that when I first came to Los Angeles, I knew of Deborah, and I was invited to an opening at the Herman Miller Showroom. At that time, you could have put the whole design community in the Herman Miller Showroom. Somebody came up to me and said, where do you work? And no, they asked me where I was. And they said, what company I work for? And I told them, Picture Girl, and then they asked me, well, what do you do? And I said, well, I'm a designer.  There's another girl designer on the other side of the room. It was Deborah Sussman. And he took me there, and Deborah and I were friends until she left us. Yeah. Yeah, and I just want to also quickly mention that Victor Gruen Associates was a very forward company that he hired women. He hired people of color. So it was quite remarkable. And I think that that's also a story to be told. Yeah, it is a story to be told. It's a good story.  One time, Carl and Louvin went out and bought, at that time, Sactresses and the few females that had to wear the Sactresses. It was a Jersey thing you put over, and it was called a Sactress. But there were things like, and then I could go on and on about it. It was a really unique office and smart and influential. I wonder if you could talk about your relationship with the Magnin family. Your relationship with the Magnins, how did you seem to really click, and this was a big part of your work? How did you connect with the Magnins? I was lucky when I went to Gruen. I was told that there were two accounts that I couldn't work on. One was Joseph Magnins and Nordstrom. And I felt like, okay, it's their company. I'll just do what they say. I'll have a good time anyway. So I was there about a year when Rudy Baumfeld, who really became my mentor. He used to call me his Wal-Haw daughter, daughter of my choice, gave me these drawings of the second floor of Joseph Magnins. And he wanted me to develop them. And so I did. And I got through with them and he said, okay, you go up and sell it. And I was so overwhelmed. I thought that to me early age, that was pretty overwhelming. And I did go up with the drawings under my arm. And I coincidentally met on the elevator, the daughter of Cyril Magnin. And I didn't know it was Ellen Magnin Newman at the time. And I thought, well, she looks important. And so I asked her if she knew where Mr. Newman's office was. And she smiled and she said, follow me. And I did. She sat down. I sat down and the secretary about 10 minutes later ushered me into Mr. Newman's office. And there was the lady that I rode up on the elevator with. And somehow Ellen and I became instant friends. And I tried to talk to Ellen every Sunday today on the phone. But I am so, it's more than grateful. It's something else that I became so much involved with the Magnin family that it was a way of life and education. And one of the Magnins is here today. And I am thrilled to death about that. But it was a unique place with a recognized challenge. And Andy Warhol did shoe drawings for them. Rudy Gernrich did work for them. Some of the innovative graphics were done by Margaret Parson. And there I could go on and on. But they were very receptive to innovation. And so that's how I became involved with them. And so I wound up staying with them all the time up there. Those are the best clients that are also friends.  And I wasn't pushy about it. It is one of those things that evolved. Another question? I wish there were other shows of Magnins today. Yes. And now we just heard that Barney's is filed chapter. Well, it seems to Magnins was free parties. Yeah, free parties. Hi. It's a long question. But you see, you really, you've been very influenced by nature and flour. So the first part of my question is, what is your favorite, your favorite flower? The second one is, have you incorporated that flower within your work? And the third part of the question is, how many times have you incorporated, no, have you incorporated that flower multiple times throughout your career? And in what way? Undone. So favorite flower, have you used it? How have you incorporated it in your work? Yes, I got my papers. So who doesn't? No, but what's a favorite? I don't have a favorite. I really don't. Because if you look at it, you can always find some way to work around it. To work and develop, not work around and develop it. At one point, I think that Kat and I were putting together a series of images and we kept finding the daisy motif over and over again. Well, it's easy to draw. It's easy. I don't like to draw anything. I wish I could get back to drawing. It seems to me you draw all the time, Jerry. Well, I couldn't do better. But you're somebody who, as soon as you have an idea, you sketch that. Yes, I do. And the sketches are always beautiful in and of themselves. I'd really like to draw because that's an extension of this that goes down to here and then into the pencil. It doesn't act the same way with the computer. I like a lot of research on the computer. There's no question about that. But that ties in to looking at books, going like this. Network this, finding something else. Any questions? So you've realized, sorry. I know that you've witnessed a lot of different waves of feminism. And I wanted to know how your work spoke to that. And also, what advice would you give to a designer that's entering a male-dominated field? I can't hear you, so I don't know what you said, and I'm sure it's interesting. So I know that. Can you hear me now? Can you hear me better? Can you hear me better? Okay. Okay. So I know that you've witnessed a lot of different waves of feminism, and I wanted to know how your work spoke to that. And I also wanted to know what advice you would give to a designer entering a male-dominated field. Work, work, work. Yes. Everybody asked me that question, and it's just work. It's fun. It's strength, it's your mind, do you think? So just work. But I actually want to know the answer to this about when you were observing these different waves of feminism, how did you observe them? So you've experienced the first, what's called the first wave, the second wave, now the third wave. So were you participating in that? I did participate for a while, and I'll tell you a funny story. I'm very early on in it. I met Gloria Steinem. And I was invited to one of her first fundraisers and sat across from her, and she told me that they were going to call the magazine Miss. And I looked at her. This is not racism, please understand. I said, I was called Miss Jerry from the time I was six years old.  But she said they will keep it. And good for her because she has made a tent, a good tent. And I think a lot of the younger people always want something that they want to protest against. You've got the world laid out in front of you, more than what we did. We didn't even know about feminism. We just did it.  I found that out very early on. Yeah. I was not being paid the same amount. I was being paid. Did you say anything? And I was also told later on when I started my own business that I did not. And but these were people later on I didn't deal with. Said, well, you don't need to be paid as much because you don't have responsibility. I was supporting my mother at the time. But that is what I call the sin of assumption. It's it's the biggest sin in the world is assuming something happened and it didn't, you know. So but I did need it. Yeah. Did you march? No, I've never really marched because now I couldn't do it if I wanted to. I'd have to be pushing something. But I've been outspoken about it, you know. And I think just by doing what I do has helped. And also I was lucky in that I got support very early on from. And they were usually from couples that were in the design business or merchandise world that the husband knew they were going to get supper when they got home. Yeah. And that may sound funny, but it's not. And so there was this camaraderie that existed between them and they sort of brought me into it. And so I was lucky in that way of not being dominated just by one kind of set of males. I was lucky to get commissions from couples. Right. You were you worked for women owned businesses. Yes, I did. Yeah. So Ellen Magna Newman, the Holland Levine, the advertising agency and Isabelle Scott, all women owned businesses. Yep, in the Magna family, the men and the women were all equal. Very cool. Yeah. Her mother certainly was. And her father was one of the movers and chakers of the accessory world. No, I'm not kidding. It was and it started over some porcelain drawers of the English toffee put on the glove compartment counter. That's how it started. I don't know whether she knows that or not. So, Jerry, we're going to thank you. Well, I thank you all for coming. It's really a new thing in so many ways. It's it's been like a reel of my life of remembering things that I had completely forgotten this whole experience of on the book. Yeah. Yeah. Yeah. And what a great group. Thank you all so much for coming. Thank you.


Hi guys welcome back to part 2. This is something which I use a lot primarily because I tend to play a lot of folk music and a lot of Indian music as well like Bollywood songs and other Indian classical songs and also there was a time when I started playing piano where I had absolutely no clue of triads beyond like the white note triads like C major, F major and G major and I'm sure a lot of y'all have gone through the same problem. So I developed this trick I think I really don't know how it happened but it seems to have worked out for me at least during my beginner level days and till then I've never considered or now when I look back I have not I don't consider it as a beginner technique because I still use the technique. So if you're just starting off on the keyboard you can use this to help you play chords a little bit more easily maybe a lot more easily and also if you're playing folk music and if you like a lot of rhythmic stuff in your piano playing this technique is also quite nice. So let's see how it works. So the first thing you need to know is the fifth chord or the power chord is built in a really really ridiculously simple manner it's just one the root then it's fifth and the octave you can even avoid the octave you'll still get the similar sound and a lot of guitar players tend to like to play it in the lower regions. You'll have like that's I guess where the power name comes into play right. However in this lesson I'm not going to focus on playing the chord in this hand it's going to be played in this hand. So if you have a progression D B minor E minor and A major what you could do if you don't know those chords or if you're finding it tough to shift because it's a lot of work and planning if you're new is you could just keep the D fifth name of the scale D major again and the D fifth can either be built as one five one octave D A D or five one five octave which is essentially the same notes jumbled up in another way or in an inversion as some people officially say D A D A D A you can perhaps play it higher if you wish decide where you like it the most based on your singer and the song you're playing and the left hand is not just going to stay D it's going to follow the base notes of the chord progression you guys are playing. So in this case in this entire series I'm choosing the one six two five which is D B E and A. So I'm not going to play chords in the left hand because I feel it creates a very muddy sound in any case so playing single notes perhaps with octaves will be nice so you go you're essentially doing chord roots and you're just holding the fifth chord here either this way or the D A D way or the A D A way which is the inversion another thing you can do to add on to this technique is perhaps instead of playing just the octave you can play a third of each note right if you're a bit doubtful about thirds I would suggest you to watch the previous part where I've talked about third formation that'll help you guys but in any case it's quite easy one two three so with every chord root you add the third B with D key with G so maybe you would want to play it a bit higher because the third start lettering up the sound right or you can go back to octaves and get a more deeper sound and what I like to do with the right hand from time to time is of course play around with this with the shape but don't change the basic notes which are A D A or D A D so if I take A D A you can just add any way your thumb is sort of you know wanting to play this B so you could also play it or maybe you can add this E or you can add an F sharp so you can add notes of the scale you don't want to add that because that's not part of the D scale you can add things like B C sharp E F sharp G anything in the vicinity of the chord that makes it very interesting and a lot more colorful so so you can also build like a mini melody like um basically it's all around the fifth chord but then you add a couple more notes to it so you can find different options here see I'm doing a lot of this D plus E thing with my thumb because you can it's right there so these are some cheat chords which pianists do from time to time and if you're playing a lot of groovy like folk music I think this technique will really help because it keeps the sound very simple the listener doesn't have to hear the chord over and over and over again they are just digesting a very small simple sound which is the fifth against some interesting bass notes so if you want to groove so basically I'm instead of playing like that I'm trying to groove it so you can again apply this to a lot of a lot of pop songs for example again if you take the Beatles let it be which we've been seeing in this series when I find myself in times of trouble mother mary comes to me speaking words of wisdom let it be in my own darkness she is standing right in front of me speaking words of wisdom let it be let it be let it be as you can see the right hand was absolutely the same throughout so if you're just starting off on the piano I think that could be a nice way to play pop songs just find the bass notes or you can google the chords if it's if it says D major you don't have to play the whole triad you can just play a fifth chord of that scale which in the D case is DAD or ADA and in the left hand you just play the chord roots and it's not you might argue that it's sounding simpler because it's simpler to play but the sound is not very simple it's quite a it's quite an exciting sound right that's like a B minor seventh it's like an E minor seventh that's a suspended sound so you are actually building some very exciting chord voicings and some very exciting sounds so it's not really a beginner level technique but if you're unaware of triads just now you could definitely use it if you're a beginner and if you already play the piano and if you've been playing for a few years you can use this technique to also spice up your voicing you can also add notes in between and so on and so forth right so that's about power chords and how you can use the fifth chords in your songs and don't forget to check out our learning material at the link provided you can go through all the slides which I've been talking about all the chords we've also notated it using staff notation and stuff like that okay cheers


Hello Angular fans, my name is Matt Rabel. Today I'd like to show you how to deploy an Angular application to Heroku, Firebase, Netlify, and S3. Let's get started. This screencast is based on a blog post that I wrote called Angular deployment with the site of Spring Boot. Angular and Spring Boot are two of the most popular combinations to use when deploying a modern web application. You'll often find that people deploy them as either separate artifacts or one specific artifact where the Angular app is inside of Spring Boot. Today I'm going to show you how to deploy them as separate artifacts. In the future I'll show you how to combine them in a single jar and deploy them using Docker. At the bottom of this blog post is a GitHub repo. There's a link to it right here. I have that open in this tab and within here I have a demo.adoc file. It's just a format that I like to use instead of Markdown. In this file I have a number of demo steps. These demo steps will show you how to deploy everything that we're doing today. I just condensed the blog post. If I click on the raw button I can view it in ASCII doctor. I have an ASCII doctor plugin that allows me to toggle on and off. You'll need Java 11, Node 12 Docker, and an Okta developer account to get started. The good news is Okta developer account we can actually create from Heroku so you don't need to create that right now. If I were to open up a terminal and put that on the right you can see I have Java 11, 12, and the latest version of Docker. I'm going to put these steps on the left here and then we'll make this a bit bigger. These are the steps we'll go through. We'll prepare an Angular and Spring Boot application for deployment. We'll deploy it to Heroku and then we'll deploy Angular and Heroku using Heroku's build packs and then we'll use Angular CLI's ngDeploy to deploy it to all the other providers. We're just going to use Spring Boot on Heroku for the back end for all the different providers and I'll show you how that works. We'll start by cloning the Angular Bootstrap example which is the previous tutorial I wrote before this one. Then we'll go into there and we can open it up in IntelliJ. The first thing you'll need to do is create a Heroku account. If you go to heroku.com, id.heroku.com, you can sign up for a new account or log into your existing one. I'm already logged in to mine so I'll create a new app. We'll call it bootable Angular and then make this a bit bigger. If we go to the resources tab we can add a new add-on called octa. This is a free add-on. It uses our developer plan which is free for life. You get a thousand monthly active users for free and we'll provision that. One thing you might want to be aware of is that to add Heroku add-ons you do have to have a credit card and Heroku system. It's a form of security verification. You can see over here we have this little free toggle going and now it's ready to go. If we were to click on settings and reveal the configuration variables you can see it's populated all of those. Back to our instructions. What I'm going to do is create an octa.env file in the notes API directory and copy the octa variables into it and paste that in there. If we go and grab those values we'll have the issuer here. With just those values we can actually start our service now. If we were to do cd into notes api source octa.env and run cradle w boot run. You'll see it starts right up and if we were to go to localhost we can use these values that we have in here to log in. So grab that one and we'll save that. Now prompt you for a security question. This is so you can do password recovery. So I can say what is your favorite security question. This one. Now you'll notice it comes back to this page and it gives a 400 error. Well that's kind of strange. You'll notice it's a 404. So if you actually go to an endpoint that exists then you'll get your data. So it's talking to an h2 database right now and everything seems to be working including octa for authentication. So now we'll need to configure our client but one thing I wanted to show you beforehand is that if you did want to run it directly from your IDE you can just modify the spring boot demo application and go to the environments and copy and paste these environment variables in here. Of course you'll need to remove the export here but now you can run it directly from your IDE so I can cancel this one and run it directly from here. And so in the Angular application the octa configuration is defined in auth routing module. So you see we have the issuer and the client ID here. So we'll grab that issuer to 605309 so change that one. And then you want to use the client ID for the spa so grab that value, put it right there and then we can run the Angular application. First of all we'll need to run npm install so do that from IntelliJ or you can do it from the command line. Now that everything is installed for the client we can go into that directory and run ng serve then if we were to open up localhost 4200 and click login and it gives us an error here so it's gone on. Looks like it's trying to go to an old one so let's go to application, clear site data hopefully you won't have to do this because I'm using different octa tenants so my last one is still stuck in there. Now if we go to login it all works and it comes back and you can view your notes so if we were to go to view notes create a new one and say first local note ee-haw that's saved in spring boot so if we were to go back to our spring boot process you can see that all working. So the next thing that I want to do is first of all commit everything to get go to terminal here go to the top little directory and commit everything so we have our octa OIDC configuration and the next thing is preparing spring boot and Angular for production so one of the first things that I like to do whenever I'm working on a new project or maybe updating an old one is update all its dependencies to the latest version this gets you security updates and other goodness so there's a couple plugins for Gradle you can use use latest versions plugin and the versions plugin to actually configure it to automatically update and not so much automatically but when you run a command it will update this will upgrade from spring 2.2 to 2.3 and that requires a new version of Gradle and so you do need to update Gradle before you do that using this command which is Gradle wrapper Gradle version at least 6.3 I'm going to do 6.5 since that's the latest one at the time of this writing or the time of the screencast distribution type equals bit and then we can run Gradle W use latest versions and you'll notice now we're using spring boot 2.3 for a look at the get difference you'll see we've got that new version of spring boot and we got a new version of octa spring boot starter as well and we'll enable auto reload on our Gradle script and now let's verify everything still works here so it's all up and running we can go to api notes verify that we didn't break anything that's still coming back and we're reauthenticated so everything's working now for Angular you can use npm check updates which is an npm package that just upgrades your dependencies so you can go ahead and install that and then if you were to run ncu it'll print out all the current versions and their upgrades so you can see there's a whole bunch mostly Angular 9.0 to 9.1 and a number of other things so you can use ncu-u to upgrade and this will upgrade TypeScript from 375 to 395 and Angular 9 only works with 383 so you do need to downgrade TypeScript after running that so if you go into your package.json scroll down to the bottom change it back to 3.8.3 and then you can run npm install so you'll see that resulted in 73 low severity vulnerabilities well I personally don't like any vulnerabilities so let's get rid of those with npm audit fix ok so you see it fixed 73 of 73 that's great let's run ng-serve and make sure we don't break anything and once that's completed log out and log back in to make sure this is all working create another new note another one so we didn't break anything that's great let's commit all those changes to get cd into the parent and update the dependencies to the latest version the next thing we'll need to do is configure production URLs and this means various things one it means that Angular shouldn't hardcode localhost 8080 as its api URL and Spring Boot shouldn't hardcode localhost 4200 as its allowed origins there's also database URLs in production you're not going to want to use h2 you're going to want to use something more robust like Postgres in demo application that's where hardcodes localhost 4200 and in our angular app it's auth interceptor and the note service so let's start with the demo application on the Spring Boot side of things you'll notice it has localhost 4200 right here so we're going to change it to use an allowed origins property this will be read from a properties file or an environment variable you'll need to import that value annotation and then down here we'll change this localhost 4200 to use that property and then in application.properties specify allowed origins equals htp localhost 4200 and make sure and don't use htps I just did that out of habit so that's good it's good habits htps and then in the angular app there's environments so there they have the concept of environments built in this will be your development environment this will be your production one and the difference is when you run ng build dash dash prod it uses production when you're just doing regular ng serve it uses development so we're going to add an api url and we'll set that to localhost and then for production let's grab that we'll use what we specified for Heroku which is that beautiful now we'll change the auth interceptor which is under app shared octa auth interceptor change this to use environment and you'll need to import environment get it spelled right there we are and then in the note service as well which is under note service so we'll start with that first one environment right here and import and then down in the user notes we need to use it there as well so we fixed all the urls we're no longer hard coding localhost and we can edit build.gradle next to basically switch between h2 and postgres so under this change this runtime only for h2 to look for a prod property being passed in and then we can add profile information so if the project has that prod passed in then use prod profile else dev and so when you're running boot run we can say hey the profile that's activated for spring is either prod or dev and then when it processes a resource when it creates the jar we want to take that dev or prod and make that application.properties and that'll be the default another way to do it is actually keep them both in there and always have to specify the profile but I like to make it so you don't have to specify the profile many with different ways to do it and so now in application.properties we can rename that to application-dev and we'll keep that allowed origins and we'll add a data source URL and all this does is set it so h2 uses a file based system instead of in memory and so if you do restart the app it actually keeps the data if you refresh or delete all the files if you run gradle clean then your data will be gone of course and then one thing we can do to test postgres is use docker compose so if you go to source main docker here called docker postgresql and we'll go ahead and add it to get paste that in there and that uses postgres12 and then we'll have this application prod that uses postgres by default you'll see that still allows 4200 uses auto update so it creates a schema and uses that data source URL for postgres one thing that happens when you do this is user is a keyword in postgres so if I tried to start it right now it actually wouldn't work we have to go and change from using user to username so I'll do that in my entity first and that changes everything all the way from there for instance all my jpa queries need to change find all by username now instead of user so that's in the rest repository and then for setting a username on a new note and then in data initializer to make a similar change there and then in our user controller find all by username so that's all you need to do to change from user to username and then for the data initializer let's make it so this only initializes in development and now we can test these profiles using docker compose so we can go into the notes api directory docker compose source main docker that starts it up it's ready to accept connections and go ahead source octa-dev first I'm going to kill 8080 just in case something's running there so source octa-m wrong directory and run gradle boot run dash pprot so now we're connected to postgres to prove that and go ahead and refresh our notes oh that's not running and you serve so you can see that worked if we look back at our run not that one in our terminal here you can see it entered it in so that's working we're talking to postgres and we have those different profiles configured so now we'll commit that code to git git commit alright now let's deploy spring boot to heroku so you'll need the heroku cli to get started so heroku login if you don't have it just go to this dev center articles heroku cli there and we'll start by mentioning that usually heroku has you have one application and one github repo but they do have a mono repo buildpacks plugin that allows you to specify that hey this directory goes to this app this directory goes to this app so that's what I'm going to be using so we'll start by opening a browser to log into heroku so we'll start by specifying the app name and configuring this app to use that existing bootiful angular one we created so I'm just going to do an export app name equals bootiful angular and then I'm going to say heroku git remote is that app name so now if you see we have the origin right that's the one we cloned from and then heroku has a bootiful angular one as well we can run these commands first of all set the app base to be that notes api directory and then we'll add the mono repo build pack as well as heroku's gradle build pack and then we'll add postgres as an add on and then by default gradle build pack uses gradle build and doesn't run the tests but we wanted to use gradle w bootjar and pass in prod so we can set the gradle task variable to be bootjar dash prod there's variables that octa created if we look at heroku config edit we can see all those variables and by default the octa spring boot starter expects a client ID a client secret and an issuer and you'll notice these variables have a web on the end so I'm just going to modify those and this will allow to override what spring boot starter will look like and then we'll do control x and yes and I'll update that configuration and then we're ready to deploy so we can run git push heroku master so now you can run heroku open or you can just click on those links and open them in your browser so we're actually logged in at this point if we were to expand this out a little and go to api notes you can see that there are no notes but we are logged in otherwise just octa and so if we go back to here this is a 404 because we have nothing to find at the root so let's fix that let's create a root home controller and so you might have noticed I just typed a couple characters and boom it spits out all this code those are intelligent live templates and if you were to scroll up to the top here I have a link to the ones that I use so these are all in github and you can import my live templates into your project and create a similar download to mine so we've created that home controller and now we can commit that and then git push heroku to the main branch so now that's completed let's see if that worked so that's taking a little while to load let's look at the logs heroku logs tail and you'll see right as I did that it starts up so that's how you can see the logs going it did take a little while I've noticed if you just do a brand new start it takes like 10 seconds but a restart can take a little while there so now it says hello to the full name from the user so that's all working we have spring boot running on heroku now let's work on angular we'll start by creating a new application for angular so heroku create clear out our terminal here heroku apps so this afternoon woodland 21849 we'll set that as a app name okay and then we'll go ahead and configure the base to be notes for that and then the mono repo and we'll add node js as the two build packs and then we'll need something to run the actual angular app so we can use http server spa for that so in package.json we can change this start script uses http server spa and then there's a special heroku post build script we can use to do the angular build ng build dash dash prod and install http server spa so we'll go ahead and commit that code and then we'll add the new git remote we'll call angular and then git push angular master when that completes you can run heroku open specify that angular is the remote if we're to try to log in here you'll get a 400 error and this is a common error that developers see and I don't blame them for being confused because it says the redirect uri parameter must be an absolute uri but it doesn't really tell you what the uri parameter is but if you look in the url way up here it actually has it so the redirect uri is that afternoon woodland slash callback so if we were to go back to our app just to get that url to the spa that heroku creates so if we were to log in via that resources octa tab we can go to applications and then to the spa app and click on general and edit and then add that uri as a allowed origin now if we're to go back to notes here try again now we're in and if we wanted to view our notes we could say hey first heroku yes there's an error there and if we were to look at our console we'll see that the page at afternoon woodlands was loaded over HTTPS but it tried to make a request to bootflying which is on HTTP so I messed that up but if I went into environment prods this should be HTTPS so if I change that and redeploy that'll work but at the same time I also need to modify the back end to allow this new origin alright so run this command and you can see now that's an allowed origin on the back end and now you should be able to add a note if I redeployed that production one but what I wanted to do before that is to make the security headers better so if we were to go to securityheaders.com and take this url here and put that in there you'll see we get an F there's no good security headers that our Angular app is outputting there's no content security policy there's no X-Frame options or anything like that so let's fix that and the way you can fix it is using Heroku's static build packs they allow you to define a static.json like this one that has a content security policy, a refer policy all those headers it's looking for as well as turn it so it's HTTPS only because what happens right now is if you go to HTTP it'll still work but you'll notice again it doesn't work that's because it's using pixie and auth code flow in the browser pixie stands for public key code exchange and that basically creates a one time code that's used by a browser to authenticate with octa so we want to make sure it forces HTTPS and that's what this file will allow us to do it also configures a spa right so it routes everything to index.html so we'll go ahead and create that in the notes directory Heroku's static.json and then for it to be ready I have to use this Heroku's static build pack and because we're using Heroku's static build pack it'll actually use our scripts instead of us having to write anything specific like we did with our ng start so we want to change this build to use ng build because that's the command it's going to call so we'll go into package.json we'll revert these changes and then commit our changes to git add the static build pack and push it one more time so now that that's finished let's see if our security headers have improved they have we're up to an A and then if we were to go and try to use the app we can view the notes let's make sure there's no errors in our console and we can say first note on Heroku this time it worked alright so that's sweet the next step I want to do is showing you how to deploy everything with Angular to a number of different providers Firebase, Amazon S3 as well as Netlify and we'll use Angular CLI's ng deploy command for that but one thing I forgot to do is in my spring boot app I never changed the spring jpa hibernate ddl auto what happens right now is if you restart the spring boot app it'll recreate the schema and lose all that data so let's go ahead and set that and I'll just make sure it's not set so Heroku config remote is Heroku you'll see it's not specified there so set that spring jpa hibernate ddl auto and now when it restarts it actually won't recreate the schema so that's something that's nice when you first deploy it creates a schema and then you set that property and it won't recreate the schema so I'm going to start by creating a Firebase branch let's make sure we have no changes in here so get check out the Firebase and then we'll go to firebase.google.com and I want to log in with my gmail account and go to the console and we'll create a project and I'll call it ng notes and no Google Analytics okay so that finished and you will need to have the Firebase CLI installed I already have that installed and configured for my account now you can install the ng deploy package for Firebase that's Angular Fire so ng add Angular Fire you have to be in the notes project or in an Angular project to do that and as long as you're logged in locally in your terminal with the same account that you are through your browser your new project will show up right here and then I'll create that Firebase JSON Firebase RC and update your Angular JSON and then you can run ng deploy and unlike Heroku this isn't based on git so you don't have to commit anything it just takes what's in your actual directory right now once your app is available on Firebase you'll need to make it so your spring boot app will log it in so grab that URL make sure we got it and we can go that's not quite as good as I want I don't want it to have the line break in there so let's go ahead there we go grab that tighten everything back up here and then we can go to Heroku config edit and the remote is Heroku that's where spring boot app is running and we'll need to modify the allowed origins so that's been updated it'll restart our app and then we also need to modify the spa app on octa right to have that URL so if we were to expand this bit and go to edit call it back if we were to open it up click on login you can see it's working for viewing the notes and if we were to click on the notes we should see that one from Heroku come up there we are so that's all working let's check it with securityheaders.com ooh a D not so good but you'll notice it does have the strict transport security header so the beauty of that is if I try to go to HTTP it redirects me to HTTPS so at least that header is present by default so we can configure our security headers in firebase.json so we'll go ahead and always add new files to get there and then we can add a new key called headers I have a headers firebase shortcut for that you'll see it creates a content security policy it allows connection to octa and Heroku app so if you need to do connection to another end point you'll want to go ahead and add it there and then just the rest of the security headers like we did for Heroku and now we can do engine deploy we'll get an issue in our package.json so if we mess that up there run engine deploy again let's try it again security headers now we got an A alright so let's commit those changes and you'll notice it did add this dot firebase hosting cache so I don't know if you need to check that into source control but if you want to make sure it knows what you deployed last time I suppose you could. The next thing is deploying to Netlify so we'll go ahead and check out the main directory the main branch and create a new one for Netlify and before running the command to add Netlify support you need a Netlify account and I just login with github and you'll see I already have an account so you might have to do a little setup there but once you have that it expects you to be connected to git and we want to use engine deploy rather than connecting to git but obviously git is a good choice because it's very easy for CINCD but I just want to show engine deploy so the easiest way is to create a temporary directory put an index.html file in it and then deploy that so I already have one of those on my desktop if you go into the tmp directory here index.html it just says hello world so I'll go ahead and drag and drop that here and boom it's deployed right that's pretty quick that's one of the beauties of Netlify so now we'll need to get an API ID and an access token for the engine deploy plugin for Netlify the first thing is our site settings has that app ID so right here we'll just create a new scratchpad we need to create a new access token so that's under user settings applications new access token we'll just call it angular grab that and then back to our instructions we'll go ahead and run ng add Netlify builder deploy make sure we're in that nodes directory and it'll basically prompt us for these two values our app ID and our access token so grab the app ID paste it in there I don't know if that worked the way you can tell if it worked is if you go into angular.json it actually writes those values into the file so you'll notice it didn't work it didn't put those in there so my copy and paste skills aren't working so well so we can just manually do that hopefully your copy and paste skills are better than mine and it works when you do it and now we can go ahead and run ng deploy now if we open up our application on Netlify we won't be able to log in because we need to add this to our octa application go ahead and edit add that as a log out as well and then we'll need to add it to our spring boot app so Heroku config edit remote is Heroku now we should be able to log in you'll notice what happened here is it actually came back to our app and gives us page not found there well that's because Netlify isn't configured to know it's a spot app right now so we have to configure it so it knows that any request should go to index.html so to do that you'll create a redirect file so under the source directory go ahead and name it redirects and then all that you'll have is this one line that says all requests should go to index.html and then you'll need to modify angular.json to actually include that file so under the assets here we can add source redirects and then we'll run ng deploy again now if you were to try again try from the very beginning hmm ah so I figured out the problem it's listed under test not the actual deployment so should be under build not test so fix it in angular.json and then do ng deploy again now if we try again this time it'll work and we're logged in and if we click on view notes we should see the one from Heroku show up and we can add a new one that says new nope so let's check our security headers score yikes a D but we have that strict transport security again so it will handle the HTTP to HTTPS to fix security headers you can create a headers file next to that redirects file so new file of headers and you'll see it's got all those similar content security policies all the rest of the security headers but we also need to add one for Heroku app.com and then we can do modify the angular.json to include that headers and run ng deploy now let's test our security headers again we got an A alright so now let's commit all that to source control now I should warn you that this does check in these values right for Netlify and these are not something that you want to put in a public source control setting even maybe a private one this is like a problem with using ng deploy in Netlify in fact when I first did this when I checked it into GitHub I got warnings, emails that said hey you checked in a Netlify API token but I like to do is go and delete it after I've demoed it so we'll go to Netlify.com and log in and we'll go here to user settings and applications and delete that personal access token and so that way even if it does get into source control no one can really use it maliciously the last platform I'll show you how to deploy to is Amazon's S3 so let's start by checking out master again then we'll create a new branch called AWS and before running the commands to deploy to S3 you'll need to create an S3 bucket and have an AWS region name get a secret access key and an access key ID so you'll need an AWS account I already have one so if I log into it and go to the S3 console I can create a new bucket I'll just call it ngnotes and I'll just accept all the defaults and then to create a secret access key you can go to the security credentials page this is for the IAM and click on access keys and create new access key and then we'll grab the values from this and we'll go back to our scratch file here put them in there and then you'll add this schematic and what Amazon allows you to do is actually define all of these as environment variables so I'm going to go ahead and do that let's do export access key ID equals this I did not work to copy out of my scratch file we'll just use non-environment variables so add this sucker here ng add and ideally use environment variables because then it doesn't get stuck in your Angular.json but this is just a demo so I'm fine with it getting stuck and then I'll go ahead and delete those access keys from AWS once I'm done with this I believe we did US West One let's double check here US West One, Oregon and then the bucket name is ng notes and our secret access key is this make sure we can paste it somewhere else okay then get in there oh, we'll try the access key ID and then just use the default so put it on AngularJson and if I go into AngularJson at the bottom it's got those missing values again so I'll paste them in there, access key ID and now we can run ng deploy and once it's finished uploading your files you'll need to enable static website hosting so you can go here go to properties static web hosting and we'll use this bucket to host a website you're going to need this URL grab that for later and we'll specify an index document index.html and eras index.html as well so that will handle it being a spa and we can save it and then we'll also need to change the permissions so we're not blocking all public access so under permissions edit and when you're creating it you could have done this as well I just wanted to accept all the defaults and then you'll also need a bucket policy or whatever your bucket name is alright so now we should be able to go to this URL and it'll render our site but it's HTTP not HTTPS so if we were to try and even click on login it wouldn't allow us to right so to use HTTPS with S3 what I found is the best solution is cloud front so you can open up a cloud front console here and we'll go ahead and create a distribution a web distribution and if you click here it'll bring up your S3 bucket so click in the origin domain name bring up your S3 bucket viewer protocol policy redirect HTTP to HTTPS and then you'll also need to set the default root object at the bottom here to index.html and then scroll down and click create distribution and so this can take some time to run I've even seen it take up to 20 minutes to deploy so what you'll want to do is expand the browser so you can see the status refresh because that table tries to be responsive and you'll see it's in progress so when that changes from in progress to not in progress then it should be available at this domain name here so that domain name is cloudfront.net so we can start adding this to our various Okta and Heroku configurations so we'll go into Okta here and you do have to add HTTPS and callback and we'll update spring boot as well let's grab that full URL HTTPS and then edit so you can see that it's finished deploying we can grab that URL try it out and now if we click login it looks like it does a different URL than the one so you notice how it redirected me to ngnotes so after waiting for 20 minutes and still having that redirect problem I figured out what I needed to change the distribution settings point to that S3 bucket but it should really point to the URL rather than the bucket so I'm going to go ahead and just create a new one so create a new distribution get started and then instead of selecting that S3 bucket we actually want the URL and you'll put that in there not the actual S3 bucket and then the redirect HTTPS and the index.html and then close the default root object and create a distribution so we want to delete our old one and then for the new one that's the URL we'll want to add everywhere so we just have that value there and go to octa change that and then now we'll wait 5-10 minutes whatever it takes for that new distribution to deploy that's finished deploying let's try it woohoo it works now we should be able to log in and lucky there talking to heroku yep we can even create a new one aws note it works so if we were to take this and try security headers we get an F so this is something that is a little more difficult to configure on aws than it is on netlify or firebase you have to actually use a lambda console and create a lambda function that adds the security headers after the response processes so we'll go to the lambda console here the one thing that I've noticed is you do need to specify a specific region so us east 1n so us east and then it looks like I have one here so let's delete that and create a new one and name it security headers click create under permissions from aws policy templates enter a name so we'll call this security headers role and we'll do basic a lambda edge permissions for cloud front trigger and click create function and then in the function code section right here we'll need to change that index.js to have this code in it and that sets all the content security policy headers and then save it select cloud front as a trigger and deploy to lambda edge and so that's our distribution and then origin response and I acknowledge and deploy and if we go back to our cloud front console it's in progress or not that one's in progress we should see that va1 is in progress so yeah I chose the wrong distribution because I had that other one in there so once that completes then we should get better security headers let's try scanning for security headers again hmm and deploy hmm still got the last function in there because I wasn't able to delete it well maybe it works now no such luck alright well it worked the first time I did it so I'm just going to go ahead and say that aws and lambda edge is much harder to add security headers than with netlify and heroku and the others but you know this should work I'm sure if you choose a proper distribution the first time unlike I did then you'll have much better success so you can commit you know your code nothing really as far as the headers was configured in the code so not a big deal we can just say commit the aws3 deployment and then you'll want to go ahead and delete your access key and delete that one because in case you check that angular json into source control you don't want that to be exposed so thank you for watching this video and if you want to check out the blog post that's angular deployment at the site of spring boot and the github repo is at octa developer octa angular deployment example so I hope you enjoyed this if you like this video you can follow my team on twitter at octa dev you can follow me on twitter at mrable and we publish videos like this one to our octa dev youtube channel chances are you're watching it right now on there so make sure and subscribe and have a great day