Please join me in a moment of centering silence. Our in-gathering hymn is number 389, printed in your order of service. Good morning. Welcome to the First Unitarian Society of Madison. This is a community where curious seekers gather to explore spiritual, ethical, and social issues in an accepting and nurturing environment. Unitarian Universalism supports the freedom of conscience of each individual as together we seek to be a force for good in the world. My name is Dorrit Bergen, and on behalf of the congregation I would like to extend a special welcome to visitors. We are a welcoming congregation.  Visitors are encouraged to stay for our fellowship hour after the service and look for people carrying teal, stoneware mugs. These are FUS members knowledgeable about our programs and community life, and they look forward to the chance to speak with you this morning. You can also stop by our information table outside of the library, where you can find more information about our upcoming events and programs. In this lively, acoustical environment, it can become difficult for those in attendance to hear what is happening in our service. So we remind you that our child haven and commons areas are excellent places to go when anyone needs to talk or move around. The service can still be seen and heard from those areas. We also have hearing assistance devices available. Please see one of our ushers if that would be helpful for you. This would be a good time to turn off all electronic devices that might disrupt the service. Do we have anybody here today who is a guide and can give a tour? Okay, well, maybe next time. I'd now like to acknowledge those individuals who help our services run smoothly. This morning, Mark Schultz is doing sound for us. Anne Smiley is our lay minister. Your greeters were Pamela McMullen and Gail Henslin. Our ushers, Tom Dolmage, Anne Smiley, Joan Heitman and Karen Yeager. And making coffee for us, Richard DeVita and Jean Hills. Please note the announcements on the red floors insert in your order of service, which describe upcoming events at the society and provide more information about today's activities. And I hope you had a chance to note some of the special events that should have been flashing up on the screen before services started. Again, welcome. We hope that today's service will stimulate your mind, touch your heart and stir your spirit. By Chihuaniso Morare. Chihuaniso Morare is a woman from Zimbabwe, California. Rockin' in his chanted great tune. He said, come here, child. I have words to tell with your secrets. You have never heard before. There is magic in magic in. Take each day as it comes. And each last year that shines, let your troubles. Here we are once again gathered in this sacred space. We come together to share our hope, find our courage, create good in the world. The prophets of all traditions and times have taught that we are called to mercy, generosity, and mutual care. That to be great is to serve. We know that there can be no enduring for humanity so long as suffering and want go unreleaved. Until all may be sheltered, none of us is truly at home. As we gather this morning, may the power of our vision sustain us in this work. That we may be the hands of holy creativity and justice and together build a better world. If you will rise in body or spirit, as we join together in the words of affirmation printed in your order of service, all that we have ever loved and all that we have ever been stands with us on the brink of all that we aspire to create, a deeper peace, a larger love, a more embracing hope, a deeper joy in this life we share. And if you will take a moment now being aware of cold and flu season, to turn and say hello to your neighbor. Please be seated. If you arrived here today with a sorrow so heavy that you need the help of this community to carry it or with a joy so great that it simply must be shared, now is that time. The sharing of joys and sorrows is our time in the spirit of acceptance and support to share with one another some special event or circumstance that has affected your life for the life of a loved one in recent days or weeks. As you share, please remember that our listeners are not only the people in this room as our services are streamed live. So for the next few minutes, anyone who wishes is invited to step to the front of the auditorium, light a candle using the microphone provided by Ann, our lay minister. Briefly share with us your message. You may also come forward and wordlessly light a candle. And if for any reason you cannot come forward, just raise your hand and Ann will bring the microphone to you. Ann, I'd like to begin if you would light a candle for all those impacted by the tragedy of the past week in Florida. And then I'd like to next light a candle for two meeting house tour guides who underwent surgery recently, Nancy Wormuth and Bruce Greg, who is not a member of the congregation, but it's one of our most stalwart guides. He had open heart surgery a month ago. And I now open the space for the sharing of your sorrows and your joys. Thank you. My name is Poppy Nayosi, and I have an incredible joy to share this weekend. This weekend, my husband and I were able to travel to Milwaukee to a friend's house for a dinner party. And that doesn't sound all that exciting, except that a year and a half ago, she was diagnosed with stage 4 colon cancer at 45 years old. And you don't think about that. So we didn't know if we'd had her in the year and a half. And she has no sign of cancer in her body right now. After all of her chemo and surgeries, she's overcome and is amazing. So I just had to share that. I'm Karen Jager, and I just want to send, especially after that last one, send love and light to my sister-in-law, Lisa, who is being treated for stage 3 breast cancer.  And if you would like one last candle for all the joys and all the tender sorrows that live in the fullness of our hearts. And as we rise in body or spirit for our next hymn, number 134, I invite our children and teachers to head to classes. Please be seated. Our reading today from MJ Ryan. My friend Kathleen is an elementary school principal in California, which is rated 47th out of 50 states in funding per student. I've known her for 15 years and have watched her gracefully ride all kinds of change in public education. When I asked her how she's managed to adapt so well, she immediately started talking about her networks. Well, she said, I regularly call a dinner meeting with other principals in the district. I call it the print din. We talk over ideas, brainstorm responses to things coming from above, offer resources to one another. And I rely heavily on my parent council at school to provide guidance to me in areas that I don't know as much about. I've created a network of support staff at school. Those of us, there's only one of. The librarian, the janitor, the secretary, and me. We regularly meet to deal with the issues we have in common. They see things I don't. Finally, I've created a network of learning for and with my teachers by gathering people I know in the private sector who do leadership development and invite guest speakers in on educational theory so we can keep up. I have always thought of network as a dirty word, as it seemed to involve talking to random strangers at cocktail parties. Those things never did a thing for me. But Kathleen helped me see that we are all embedded in various networks already, and that when we're going through a change, tapping those networks for guidance, for ideas on what you need to be learning, for their take on coming trends, among many other things, is crucial. I have always liked to think of myself as a lone wolf. But if I really think about it, I have several networks, friends, trainers, parents, clients. Don't just network in times of need. We all need to stay connected to others as much as possible. We need folks we can rely on, advocates out there in the world. Call it a clan. Call it a network. Call it a tribe. Call it a family. Whatever you call it, whoever you are, you need one. I'm going to do a song about a hero of mine. Her name is Ann Cheung, and I first heard about her when I read her book Life and Death in Shanghai. And it's her autobiographical account of her experience during the Chinese Cultural Revolution, like a lot of people in that time and place. She suffered much hardship. She was in her 60s at the time, and she was even put in solitary confinement in prison for over six years under harsh conditions. There was no heat in the winter, and there was no such thing as calling a lawyer or any outside help at all. And so she, anyway, so it was a really hard time for her. And what she would do to get through is whenever she noticed anything positive in her environment, she would focus on it. So one day, she noticed there was a little spider in her prison cell, and she became fascinated watching it weave its web. And she started to become attached to it. She would look for it in the morning when she woke up, and she would look for it later in the day, and then before she went to bed. And I found that very moving. So I wrote this song about the prisoner watching the spider. And speaking of networks, that was like her network. It was her only social outings at that time, so to speak, or what she was taking to be interrogated and sometimes tortured. And other than that, if she got terribly lonely, what she would do, if she felt very depressed and low, if she would actually instigate an incident, she would demand to be released, so a guard would come and get her, take her out to an isolated place, and generally yell at her, and kick her and punch her, and then bring her back. And she actually found that energizing because she was so lonely. So anyway, the epilogue to the story is after the six and a half years, she eventually was released because the authorities feared she would die in prison, because she got very sick. And they thought she'd like maybe a few months, but she went on to live eight more years in China, and then she was able to come here to visit relatives, and then she took that opportunity to stay in the US and become a citizen. Her friends recommended that she write her memoir, so she did. And to her astonishment, it was published and became a best seller, and she went around all over the place, lecturing, and lived into her mid-90s. And I found the book at random in the library, loved the book, and wrote the song, and then I wanted to release it on an album, so I wrote to the publisher for permission, got a handwritten note from me and chained herself several weeks later, and she said, gave me her blessing, said she'd like to meet me. So I went to Washington, D.C., and met her, and played her the song, and then she took me out for Chinese food, so as you can imagine. She knew how to order some Chinese food, and we became friends in pen pals, and I met her when she was in her early 90s. She was sharp as a tack, living on her own, driving, and as I said, she lived her mid-90s, and at one time, she only had that network of a spider. It's just an amazing story of perseverance. So here's the song. Bring me home in this gray place with dirt and barbs and the guards, hostile fairies.  Sit for Asian league. You may be small, but you're tricky. Drap and pray twice. You're sized with thread, thin and steep. There's a story about a monastery somewhere in Europe that is perched high on a cliff hundreds of feet in the air. The only way to reach the monastery is in a basket, and that basket is pulled to the top by monks who hand over hand reel in the basket by muscle power alone. The ride up the steep cliff is absolutely terrifying. Ones a visitor became exceedingly nervous about halfway up the cliff when he noticed that the rope, the only thing holding him in that moment, was somewhat old and frayed. With a trembling and clearly anxious voice, he asked the monk who was riding with him how often they changed the rope. The monk simply shrugged, thought for a moment, and answered, whenever it breaks. I think of this story when I am in one of those moments when I can't stand another instance of change. I am going to keep everything exactly the way it is now. Thank you very much, and I'll worry about it when the rope breaks. Yet I know in the back of my mind that the rope is always breaking. Change is a constant, and it is happening in more complex and shifting ways at faster rates all the time. So I've been trying to prepare myself as best as I can for the changes about to happen here at First Unitarian Society. I'm taking the pro-interim training offered by our Unitarian Universalist Association as a way to prepare myself to work with our interim minister next year. I have been reading as many books on the subject of change and organizational change as I can, books such as How to Survive the Change You Didn't Ask For, Emergent Strategy, How You Shape Change and Change the World, Reinventing Organizations, and one I never thought would be on my nightstand, Team of Teams, New Rules of Engagement for a Complex World. This last one was written by General Stanley McChrystal, who's perhaps best known as the commander of the U.S. and coalition forces in Iraq during the war against al-Qaeda. The lessons he learned during those years, as well as a lengthy study of organizational history, was the beginning of Team of Teams. The challenges McChrystal and others faced were unlike those of any previous wars. He notes, on paper, the confrontation should have been no contest. We had a large, well-trained, superbly equipped force, while they were recruiting locals and smuggling in foreign fighters one by one through dangerous and unreliable methods. We enjoyed robust communication technology while they were often dependent on face-to-face meetings and letters delivered by courier to minimize detection. Our fighters had persevered through the most demanding training in the history of special operations. Theirs had attended a smattering of various kinds of training scattered across the Arabian Peninsula. We could, at will, tap into an unmatched well of firepower, armored vehicles, cutting-edge surveillance. Their technology consisted of IEDs assembled in safe house basements from propane tanks and expired Soviet mortars. We were exemplary in our discipline, yet despite our pedigree, our gadgets, and our commitment, things were slipping away from us. We had to ask ourselves a deeply troubling question. If we were the best of the best, why were we unable to defeat an under-resourced insurgency? Why were we losing? What they discovered in answer to those questions was that they had to unlearn a great deal of what they thought they knew about how this fight and the world works. They needed to tear down familiar organizational structures and rebuild them along completely different lines, swapping their sturdy architecture for organic fluidity because it was the only way to confront a rising tide of complex threats. They restructured from the ground up on principles of extremely transparent information sharing and decentralized decision-making authority. They dissolved the barriers, what he called the walls of our silos and the floors of our hierarchies, the things they believed had made them efficient. They became what he calls a team of teams, a large command that captured at scale the traits of agility and flexibility and adaptability normally only thought possible in small teams. Almost everything they did ran against the grain of military tradition and general organizational practice. They abandoned many of the precepts that had held throughout the 20th century because he said the 21st century is a different game with different rules. Now, personally, I love visuals. So I made visuals to show you what he's talking about. And this is as high tech as we're going to get today. I told the Saturday service yesterday, this isn't just you. Even Sunday is getting these visuals. No, I'm OK, thanks. So first, this is the traditional structure that we all know. Look familiar? He calls it the command hierarchy. McChrystal says the issue here is that when we stack our teams into silos, we become unwieldy with no information sharing and people competing for resources. So they moved to a second structure that looks like this. He calls it a command of teams. The teams here can bring a measure of adaptability to previously rigid organizations, but your teams are still not communicating with one another. As the world grows faster and more complex, we need to figure out ways to scale the fluidity of teams across entire organizations, which brings us to the team of teams approach. In this model, you enable people to operate in an interdependent environment, understanding the butterfly effect ramifications of their work, making them aware of the other teams with whom they would have to cooperate in order to achieve success. This model creates an organization within which the relationships between the teams resemble those between the individuals on a single team. Teams that had traditionally been broken into silos now become fused to one another by trust and shared purpose. Now when I look at this, I see a web, perhaps an interdependent web of all existence. Sound familiar? And I begin to wonder how an image such as that could change how we live and move and be with one another and how our organizations can open up to change. Because knowing that you need to change and even wanting to change isn't enough. Without rewiring our thinking and looking at new models for ourselves and our organizations and the systems that support us, all we get is wishing and wanting and not a lot of movement and growth. So that image also brought to mind the ancient tale of Indra's web, which goes something like this. Imagine if you will a great net spun with delicate intricacy, adorned with lovely jewels stretching out in all directions. This is the magnificent web of the great God, Indra. Indra's web is like that of a spider in intricacy and loveliness. But it is no ordinary weaving, for it spans the infinity of time and space. At each place where the threads of the web connect to each other, a single glittering jewel has been hung. And since the web is infinite in dimension, there are an infinite number of jewels that stretch out across the vastness of existence, suspended in and supported by the web, catching the light, twinkling like stars. When you look at one of the jewels, you notice that in its surface you see reflected all the other jewels in the web. It is an infinite process of reflection. Now each sparkling jewel is a being, a human, a plant, an animal, each of us connected to every other in this interdependent web. Everything affects everything else. Any change in one jewel, in one being, in one person results in change, however slight, in every other. Think about what you might be sending out across this web. Whenever one strand is harmed, whenever there's a tear in the fabric, the entire web feels the hurt. And in the same way, every act of love, of repair, sends ripples through the infinite web, touching every jewel, every being, every life. This image of Indra's web helps me to understand what Thoreau called the infinite extent of our relations. This is interdependence, mutual dependence between beings. We know that it's a reality. We know that it is biology. It is a fact of our existence. Yet most of us are socialized toward independence, pulling ourselves up by our bootstraps, working on our own to develop, to survive, to win at life. Competition is the way we hone our skill and learn to feel proud about how much we achieve as individuals and sometimes to actively work to bring others down in order to get ahead. And it just doesn't work anymore. This is what McChrystal learned and how that giant organization figured out how to work interdependently, to embrace the complexity within us and within this web we share. And here is perhaps the biggest takeaway for you today. So if I have lost you along the way and you are now thinking about what you need to do the rest of the day, come back for just one moment. Building community is to the collective as spiritual practice is to the individual. Building community is to the collective as spiritual practice is to the individual.  Not because you do some particular thing but simply because of the miracle of you and that the people around you have contributions as well. Do you understand that the quality of your life and your survival, they are tied to how authentic and generous the connections are between you and the people you live with. Are you actively practicing generosity and vulnerability in order to make those connections strong? Generosity here means giving of what you have without strings or expectations attached and vulnerability means asking for what you need. If you can do this, if you can build community as a spiritual practice, you will feel yourself in this web. You will feel yourself woven into the world. And when we are woven into the world, we will not want to sever any of the connecting fabric between ourselves and all the beautiful sparkling jewels here with us. We will want to repair the web, knowing we are surrounded and held up by others also working on repair and we will find possibility and courage and hope. So in one month's time, we will be joined by the UU minister and theologian and author, Tandeka. I encourage you to attend her public lecture and to register for the weekend workshop. She is going to help us look at the brokenness in this web and help us begin to heal the broken places within us so that we can move forward in the work of repair. In an article she wrote for the UU world on healing community, she talks about the Buddhist monk, Thich Nhat Hanh. And she says that he invented the word interbeing to describe the structure of this binding principle of our lives. In any and every human experience, he says everything is present. Think of a piece of paper, really look at it and you will see that everything is there. You are there. You cannot point to one thing, not their time and space and earth and rain and minerals, the rivers, the heat. Everything coexists with a sheet of paper. That is why I think the word interbeing should be in the dictionary. To be is to inter-be, you cannot be by yourself alone. A sheet of paper is, he concludes, because everything else is. Inter-being is our reality. The work begins when we listen and we notice that all these beings here with us are fellow jewels on the web, shining with a radiance and a brilliance that we barely notice. It begins when we wake up from the illusion of separateness and independence and notice more deeply that something is terribly wrong with our web. This model of being in the world doesn't work anymore. We need this. What my children said yesterday, Mom, is that a picture of chaos? I said, it could be, we've got to try. We need to repair our web and that is our collective spiritual work to ask what we are helping to create. What vision are we living into? Who are our people and how do we make our web larger and larger? If our structures were built on this model, if our leaders and lawmakers were living into a deep practice of inter-being, then we would not have prayers and heartfelt wishes being sent to grieving families. We would have policies and laws enacted that protect the most vulnerable among us. Our web is in desperate need of repair and it will take time. It will take new ways of being together and it will take each and every one of us. Can we break out of the old model of individual silos to see that our well-being is dependent on the well-being of the whole and that the damage and hurting has gone on for far too long? Now, just before he died at the age of 96, Studs Churchill, who'd written an oral history of the Great Depression, was asked what he learned about that time that he could offer to us now and he said, turn to others, take part in community. The big boys are not that bright. So I invite you to turn toward one another after service today. Get some coffee or tea or hot cocoa and find someone that you don't know. Ask them how they've dealt with change. Ask them what excites them about the future. Meet someone that you didn't know when you arrived here today and make your web a little larger. We live within the preciousness of time. It is limited and it is sacred. Everything we do, every action we take is practice ground. Practice building the collective. Practice building community. Practice openness, embrace change, practice love. So in honor of our web, I leave you today with a poem from Joyce Sidmar that's called The Night Spider's Advice. Build a frame and stick to it, I always say. Life is a circle. Keep going around. Do your work. Eat your triumphs. Eat your mistakes. That way your belly will always be full. Use what you have. Rest when you need. Dawn will come soon enough. Someone has to remake the world each night. It might as well be you. I now invite you into the giving and the receiving of today's offering. You'll see that it is shared with Wisconsin Faith Voices for Justice. They are partners with us in our sanctuary work. You can find out more about them in the order of service and we thank you for your generosity. I'm Larry Johnson. My wife Pamela and I became members of FUS about 15 years ago when we moved to Madison. Prior to moving to Madison, I participated in other spiritual communities for many years, but often stayed home on Sundays. When I came to FUS, I immediately felt at home. This was the place for me. Yes, it was the inclusiveness, social justice, activism, embrace of spiritual exploration and welcoming that resonated with me and keeps me here. I'm now involved with the Monday Night Men's Group and Sing in the Society Choir. Pamela has been a participant in Quest, co-facilitates the Thursday afternoon centering prayer group and has been active in committee work. There is much more about this unique community that makes it home for me. You already know about the great music program, the very special RE curriculum, the many adult education opportunities and the thoughtful messages from our ministers. Some of my favorite things about this community include the professional and caring staff, and yes, the book sales rack back in the commons. I've read some thought-provoking books that I would not have otherwise encountered or considered. I like the songs we sing during the services. Sometimes they hum in my heart for weeks, and especially a powerful song to me is number 346. Come sing a song with me. When you or your partner are losing sleep at night because of life's fears and pains and changes, try singing or saying the words of that song, especially the opening line of the course. I'll bring hope when hope is hard to find. I believe in the hope and the supportive work of the First Unitarian Society, both within ourselves and in the larger community. FUS is a priority for us. We gladly give our time and our money for the current and future needs of FUS. We've always pledged in the past and upon retirement considered reducing our pledge, but we easily agreed to maintain our level of financial giving because of the importance of our commitment to FUS. We pledge to make our support steady and consistent. We plan on and FUS plans for our regular donation to enable the work of this community. It is a partnership that sustains the future. Now, if you pledge an amount with several zeros after the number, great. But know that any amount you can pledge and then give in a reliable, steady way assures that FUS will be here with and for you and our community. If you already donate without pledging, please consider formalizing your generosity to facilitate financial planning. Thank you for your thoughtful consideration about your money and the mission and sustainability of FUS. And now we will sing the closing hymn, number 131. Please rise. Please be seated. You may have noticed in your order of service that our postlude is a very familiar hymn for many of us. It is number 1064 in the Teal hymnal blue boat home. We invite you to join in and sing along. Until we gather again, may we honor the strength we find when many hearts and minds join as one drawn on by a vision of how we yet may live in a world of joy and brokenness. We honor the dance of change in which we move, life and loss tied together the turning seasons, sun and shade each with their gifts. This is our beloved community. By its light, we honor the holiness within us and the holiness of our world. May its light shine on one and all, bringing love, kinship and hope. Blessed be and go in peace. And we'd love to have you join me.


Hi, thank you for joining us for this session on demystifying database performance issues with SQL Commenter. I'm Jan Kleiner and I lead an advocacy team within Google Cloud that focuses on databases and infrastructure. And Bala Chandrasekharan is a software engineer in Google Cloud focusing on databases and also working as a software engineer on SQL Commenter. So many developers use ORMs to simplify development of applications that communicate with databases. But since ORMs are generating the SQL statements, it becomes difficult to determine which application code is resulting in slow queries. So in this session, we'll show you how you can use SQL Commenter and open source library to help solve this problem. We'll demonstrate how to set up a new SQL Commenter with a Node.js application that uses Kinex so that we can more easily diagnose query performance. We'll also look at the other frameworks and ORMs that SQL Commenter supports and how you can view this information in database logs and observability tools, including Cloud SQL Insights. So let's get started. SQL Commenter is an open source library that enables ORMs to augment SQL statements before execution with comments about the code that caused its execution. This helps in more easily correlating slow queries with source code, giving insights into backend database performance. In short, it provides observability into the state of client side applications and their impact on database performance without having to be a database performance expert or use a multitude of tools. Application developers don't need to do very much application code change at all to enable SQL Commenter for applications that use ORMs. You can find a link on the slide to the GitHub repo which in turn links to the documentation for SQL Commenter. SQL Commenter is available for Python, Java, Node.js and Ruby and is supported by several ORMs and frameworks that you can see here. It's also been tested against a number of databases including Postgres, MySQL, MariaDB, SQLite and Cloud SQL. Now let's look at some of the key parts of the specification for the SQL Commenter algorithm to understand how it works. SQL Commenter augments a SQL statement with a comment containing serialized key value pairs or application tags as we call them that are retrieved from the supported ORM or framework that you're using. So this can be information like the controller, the route, the action, the database driver, the framework, those types of things. The comments must come after the SQL statement and any existing comments must be preserved and the key value pairs have to be comma separated, URL encoded and any meta characters escaped and then they get sorted in lexicographical order. You can read even more detail on the spec and the algorithm at this link but what we just described should give you the general idea for how it works. These augmented SQL statements will then show up in your database logs. By having these application tags from the ORM in your logs, SQL Commenter will help you determine what application code is associated with any slow queries. Here's an example of a query log from a Postgres database that's used by a Django application with SQL Commenter for Django enabled. In the log, you can see an update statement being executed and at the end of the SQL statement, the SQL style comment has been added in the form of key value pairs. This comment was added by SQL Commenter to the query that was generated by the Django ORM. As you can see from the comments, it provides information about the controller, which in this case is a sign order. This is the controller method that sent the query. In the case of Django, the controller in an MVC pattern maps to the view in a Django application. You can also see information about the route, database driver and framework. Now, since this query has taken 400 milliseconds, we can go into the assign order method to see if we can understand why it's taking a relatively long time. Now we're going to walk through the process of deploying a Node.js application that uses a Postgres database for backend storage. Then we'll enable SQL Commenter in that application and look at logs and also Cloud SQL insights to view and monitor queries taking advantage of that SQL Commenter information. We'll switch over to the demo now. So first we'll use a GCloud command line tool to create a new Cloud SQL instance named MyInstance. And we'll create that with Cloud SQL insights enabled. So here you can see we're going to create a Cloud SQL instance named MyInstance. Here we're specifying the version of Postgres, the region where we want this to be created. You need to enter our password. And then this flag here enables query insights, allows it to record application tags and record client IP addresses. We'll learn more about this in a moment. And now our Cloud SQL instance is being created. This may take a few minutes, so we're going to speed this up for the sake of the demo. Okay, so now our Cloud SQL instance has been created. Next, we will create a database that we'll use for the sample application. The database is going to be named VotesDB. We'll create that now. Okay, so now we have our VotesDB database. I'm going to get the instance connection name. You can get that from here in the console. I'm going to copy it now. Alternatively, you can get it from the command line by running the following. GCloud SQL instances described. My instance pipe that to grep connection name. And you can see there, we have the same instance connection name information that I grabbed from the console. We'll need that later when we are configuring the Node.js application. Okay, so now we need to create a service account that we can use with the application. Service accounts are used to grant permissions to use different services within your Google Cloud project. So in this instance, we will need one to give the Cloud SQL proxy that we'll be using with this application permission to connect to our Cloud SQL instance. So let's do that now. Here, the service accounts. We'll create a new service account. I will call it node demo. Click create for roles. I'm going to filter for a Cloud SQL and we will find the Cloud SQL client role. That's what we need in this case. Click continue and then done. Once that service account is created, I'll click here to manage keys and we want to add or create a new key. We want the JSON format. So we'll click that. And now we have this key created. So I can click these three dots here and choose upload file. And I will upload that JSON file that was just downloaded to my local machine. So that's uploading. And then when I type LS, it's actually in our home directory. So I'm going to move, I'm going to move that JSON file here so we know where it is. So as I mentioned before, we're going to use the Cloud SQL proxy for communication between our application and the database instance. So we will download that now with this command. You can see that we have it here now. And then to run the proxy, we're going to use that instance connection name that we copied before as well as the path to our credential file. Now I don't believe that I have that in my clipboard anymore. So let's go ahead and get that again. And copy it. All right, so Cloud SQL proxy, credential file equals no demo. No demo. One, two, three, four, five, six, seven, eight. JSON into instances. Pass that into our connection name. Close this out so we can see. Okay, so Cloud SQL proxy will pass in the path to our credential file. For instances, we'll set that to our instance connection name followed by equals TCP colon five, four, three, two, which is the port. And ampersand, so that runs in the background. All right, we know this is successful since it says ready for new connections here. I'll close this so we have more space. All right, now we need to clone and test our application. So we're going to be using the Node.js documentation samples. So I'll clone that now and we'll go into that directory, put SQL and Postgres connects. All right, here's where our application is. I'm going to go ahead and run npm install. She'll take a few seconds here. Now we're going to set up some environment variables. There's other ways of doing this, but for the sake of this demo, we're just going to use these environment variables here. So Cloud SQL connection name. I have forgotten our connection name, so let's go back over and grab that again. As a reminder, you can get it from here. I'm gonna paste that. All right, next we will export DB host, which we're going to set to <IP_ADDRESS> colon five, four, three, two, since we are running through the Cloud SQL proxy, which is running locally. Okay, next export DB user. Our user is the Postgres user, export DB pass, which is the password we set up for it, and then export DB name. And our DB name is votes DB. All right, so now in our sample application, we have this create table.js file. We're going to run that, and what that's going to do is create a database table that the app needs in order to run, and it'll ensure that the database is properly configured. Then we'll start our sample app. So to do that, we are going to run the following. So we'll run node create table.js, then we'll pass in that database user, password name, our Cloud SQL connection name, votes, and then our DB host. So these are just parameters expected by this create table.js. All right, it looks good. So it says it successfully created that votes table and then closed the connection. So we know we've got good connectivity here, and we're ready to go. So let's make sure this application works. We're going to go to web preview, preview on port 8080. It's going to open in this new tab here, and hopefully we forgot to actually start the application. That's important. So let's run npm start. All right, and now if we go here and refresh, we should, yes, now we have access to our application. So this demo application is a voting app where you can vote for tabs versus spaces. So if I click here for spaces, I can vote. Lots of people could vote if we had multiple people accessing this app. For now I'm just going to put in a few votes, mostly for spaces, but we'll put one in for tabs just for good measure. All right, so now we've saved some data in the database by making those votes. Now let's create a page to be able to view all votes. Instead of just recent votes here, what you can see on the recent votes page, it just shows the five most recent votes. But let's say we had a lot of votes and we want to be able to view all of them. I'll go ahead and do that now. So control C to stop the application. I'm going to open up the editor in Cloud Shell here. Make it a little taller, so you can see what we're doing. And we're gonna find server.js in here. Doc samples, Cloud SQL, Postgres connects. And then here we go, server.js. We'll add a new function. Let's find where we have get votes in here. Insert, vote, get votes. And below that we're gonna add a new function for get all votes. Below where all the other routes are defined here, we'll add a new one for get all votes, as you can see. Okay, and now we need to create a new file in our views directory, new file. I'm gonna call this one allvotes.pug and I'll just paste in the code for this new page. It's just gonna be a page to display all the votes. Okay, now we can switch back over to the terminal and run npm start again. Let's see how that goes. The reason that we're doing this is to just make things a little bit more interesting once we use Cloud SQL Insights to look at the database activity. So now if I add get all votes to our URL here, there you can see we've got a list of all the votes, all eight of them that are present in the database. All right, so that's working. Now we wanna enable SQL Commenter in our application. Now for every framework or ORM that you're using, this process will be a little bit different. This is how we're going to do it for this particular app which is using connects. So the first thing that we'll do is install the packages that SQL Commenter needs. Now I'm gonna do this all in one step with an npm install. So we have Google Cloud, SQL Commenter Connect. So on, you can find the instructions for each ORM or framework in the SQL Commenter documentation. We'll run this now, great. Okay, we'll switch back to the editor. So now that we've got those dependencies set up, we need to go back to our server.js file and go up to the top here of this file here. After this, we're going to add the following code. So add this require and then set it up to actually use it, that will go here. And again, you can find these code snippets and the documentation in the SQL Commenter docs. All right, so that's all we need to do to enable SQL Commenter in this application. If we've done that correctly now when we run npm start, we should be good to go. Let's go back to our application and add some more data to the database now that we have SQL Commenter enabled. So now that SQL Commenter is enabled, there should be comments added into the logs that include some of the information about our application. Those application tags we talked about before, those should be present now that we've enabled SQL Commenter in the application. I'm going to go to that Get All Votes page again, Get All Votes, and for fun, we'll just refresh this a few times. Okay, now let's take a look at Cloud SQL Insights so that we can view some of the query performance and look it into ntracing. So if we go into our Cloud SQL instance, this query insights link here or this link here below the main graph will take us to the query insights dashboard. So here we go. This top level query insights dashboard shows this database load all queries graph which contains things like CPU capacity, CPU and CPU weight, IO weight and lock weight. In this case, the database query load is low so there aren't really any large spikes on the graph. Below this graph, you can see a table of queries that contains normalize queries for whatever time range is selected. Here we have one hour. So you can click into an individual query if you'd like to view detailed information about the query like database load for the specific query, query latency, query plan samples and top users. But if an application is built using an ORM like this one, you may not know which part of the application is responsible for which query and that's what the top tags section here can help you understand. So we'll toggle there to the tags table and now you can see database load broken out by which route generated the load. So what you can see here is get all votes has more rows returned on average, which makes sense. The execution time isn't problematic in any of these cases, but we're going to go ahead and click on get all votes anyway to look at it in more detail. One other thing to notice, there is this row here where there is no route. This is because before we enabled SQL Commenter in our application, we didn't have any application tag information being passed through to Cloud SQL Insights. So you can still use it even without SQL Commenter enabled and see this query information, but to give that added benefit of having application tags, SQL Commenter must be enabled for your application. So let's go ahead and click on get all votes and take a look at what data we can see in more detail. You can click on one of the dots in the query plan samples graph to see a sample query plan. Now I'm going to switch to showing you query plans and end-to-end tracing for a more complex application so that you can get a better sense for what you can see in the tool. The query plans show how Postgres executes a query under the covers, making it easier to determine if there's operations that result in slowness. Cloud SQL Insights also has in-context visualization of end-to-end tracing, which can be helpful for doing further investigation into what parts of an application are generating slow queries. To see it, you can click the end-to-end tab to view an in-context trace. Note that you can learn even more about how to use and interpret the query plans and end-to-end tracing in the Cloud SQL Insights documentation which we'll reference at the end of the presentation. All right, so now you've learned how to enable SQL Commenter in a Node.js app that connects to a Cloud SQL Postgres database and you've learned a little bit about how you can use Cloud SQL Insights to monitor and investigate query performance in that application. On this slide, we have a list of resources if you want to learn more about either SQL Commenter or Cloud SQL Insights. There's a link to the SQL Commenter documentation and the GitHub repo. And for Cloud SQL Insights, there's a link to the overview docs as well as a code lab that's very similar to the demo we showed you today. Thanks so much for joining us today to learn a bit more about SQL Commenter. If you'd like to follow up with us, you can reach us on Twitter or email as shown on this slide. We would love to hear your feedback, so get in touch with any questions, comments. We'd be more than happy to hear from you. Thanks so much.


90% of junior UX designers struggle to find clients. That's true. I'm doomed. I've spent six years mentoring them. Here are four actionable tips to get you your first client. Number one is to have a solid portfolio. It's got to be online. Make sure it's accessible through a link. It's got to be personalized.  It's got to be simplified, simple to navigate, simple copy, and a simple way to reach out. Number two, make the most of your existing network. Inform them about your work, help them with any UX related jobs. Ask them to spread the word, offer high quality work for cheap. Your friends, families, and colleagues are all credible and free referral sources.


Hi everyone, welcome back to Apple's NTRS. So today I'm going to be doing a unboxing video for the Until It's Quiet subscription service boxes. I was contacted by Until It's Quiet subscription boxes to do a review on the box. And I think that this is such a great idea because us as teachers, we need time to sit, we need time to relax. And I think a box like this would be super amazing to subscribe to because it contains all kinds of relaxation products. On their website, untilitsquiet.com, there are a couple of different boxes and I'm just going to read them off to you guys. And the website is untilitsquiet.com and I will actually have that linked down below in the description box. So this is a subscription service. You sign up yourself or a loved one to receive these boxes. I believe it is monthly. Yes, you receive a gift every month and it is designed to help you relax. Now they do have a couple of different boxes. They have the relaxation subscription box. They have the mystery mashup box, which I believe is a mashup of all different types of items. And they range from $30 to $10. I believe they're on sale right now. There's also, so you can either choose to do the subscription box or you can purchase the boxes on their own. So they have a mystery mashup box. They have a caffeine box, which sounds like it's right up my alley. They have a mini mystery mashup box and they have the county fair box. Now these range from $30 to $10. I believe the subscription box is $30 and that is per month. So you're going to get a new box every month. When you subscribe to the untilitsquiet box, you save 10%. So you actually are only paying $26.99 per month. The boxes are shipped out the eighth of every month and are at your home in a couple of days. So Crystal from untilitsquiet sent me the December untilitsquiet box and I'm just going to open it up and review it for you guys. I love the box. First of all, it's like super, like it reminds me of an Aaron Condren package but it has the untilitsquiet sign here. And I'm just going to cut this open and try and figure out where it's in right here. Super exciting. All right, so I'm opening up the box and so far it is packaged so cute. There's a little card in here that says peppermint is a tasty treat all year long but around this time of year, it's even more popular and it just talks about peppermint. So I think there's going to be some peppermint stuff in here. It might be peppermint themed. Also, there is a, ooh, hand poured hope soy candle company. It looks like there might be something in there. And then it also gives me the untilitsquiet business card so that I can share this with everyone. This subscription service was created specifically for teachers and I'm like dying to get in this because it's focused on relaxation. So the first thing I'm pulling out, oh, how cute. Is this a scarf? I think it is. Oh my gosh, it's totally a scarf. How cute is this? Oh, it's an eternity scarf. Yeah, I don't know. One of these that wraps around more than once. Oh my gosh, the whole box smells like peppermint. This is amazing. So after I took the scarf out, this is what it looks like. All kinds of goodies in there. So I'm gonna pull these out one by one. So first thing on the top is a peppermint candy cane. Now remember, this box was designed for December. I am opening this at the end of December because I just got it and with Christmas and everything it got crazy. But there is a candy cane in here, which I love candy canes. I love putting it in my hot chocolate. Next, there is this little thing that says relax and it looks like these are peppermint pecans. Yum, that sounds amazing. Then I'm pulling out a peppermint hot cocoa pack and it looks like it's just a package of hot cocoa, but it's peppermint hot cocoa. And yum, this looks delicious. Dark velvety chocolate with a pleasing tingle of peppermint. Ooh, yeah. Ooh, these are made by the Starbucks company. So that's really exciting. Next, I'm pulling out, ooh, what is this? Ooh, a lip scrub, a peppermint lip scrub. Mm, that's definitely going to help me relax. Ooh, yeah. I'm just gonna use some now. Oh yeah, I love a good lip scrub.   Oh yeah, oh yeah. Then I'm pulling out a snowflake soap. It's also peppermint flavored. So this whole box is geared toward peppermint. And this is so cute. This is like peppermint too, I love that. So this is a soap. And then, ooh, I'm getting even more excited in here, is a peppermint soy candle from handporthope.com. Let me smell it. Hold on a second. Pause for sniffing. Oh my gosh, that smells so good. Yep, that's happening.  And it's so cute. Is it really that color? I think this is not the color. I think it's wrapped in something, but a peppermint, blitz, fizz and foam bath bomb. This is so amazing. When she sent me the, when Crystal contacted me about reviewing this box, I had no idea that it would be so themed and geared toward relaxed. Like I knew it would be geared toward relaxation, but I didn't realize like this is like the whole, a whole night of like pampering yourself. Like if I were to come home from a hard day at work and I really wanted to relax and like let go, I would just get this box and everything in here is perfect. I have my candle to sit next to my bath. I have my bath bomb. I have my soap. I have my hot cocoa that I would just make and have while in the bathtub. I could use the lip scrub to pamper myself afterwards. While snacking on these cute little pecan peppermint pecans. And this is perfect to go in my hot chocolate. So Crystal, thank you so much for sending me this box. This box is amazing. I'm definitely, definitely going to go ahead and subscribe to this service because this, to get one of these every month would just be like a little treat, you know, like a present that is just going to be for you and especially as a new mom, I definitely need a night of relaxation. Every once in a while that I don't usually get. And if I got this box once a month it would remind me to just stop and put some time aside for myself to relax. So thank you so, so much Crystal from Until It's Quiet. I am so super excited to subscribe to this service and you guys should definitely check them out. I'm gonna go ahead and link their Instagram and their website down in the description box below for you guys. Definitely, definitely head on over to the Until It's Quiet website now and subscribe to this service. I think it's a really, really great idea and very, very creative. So thank you so, so much you guys for watching and I will see you in the next video. Bye guys. Hi guys, it's Shar. I just wanted to say thank you so much for watching my video today and for supporting my YouTube channel by subscribing. Don't forget to click the little bell next to the subscribe button so that you can see when I put up new videos. I hope you have a magical day.