And that musical introduction is our way of saying good morning everybody and welcome to another Sunday here at First Unitarian Society. And it's not just another Sunday, this is Stewardship Sunday, and you'll hear more about our Stewardship campaign a little bit later. For now, let me just say good morning and welcome to First Unitarian Society. We're independent thinkers gather in a safe, nurturing environment to explore issues of social, spiritual, and ethical significance as we try to make a difference in this world. And speaking of things that are different in this world, I'm Steve Goldberg, a proud, enormously popular member of this congregation. And I'd like to extend a very special, same to you Carol, very special welcome to any guests, visitors, and newcomers. If this is your first time at First Unitarian Society, I think you'll find that it's a special place. And we invite you to join us for our fellowship hour right after the service. Speaking of the service, this would be a perfect time to silence those pesky electronic devices so that you can avoid the shame of public flogging. And I invite you to sit back or lean forward to enjoy today's service. I think you'll find that it will touch your heart, stir your spirit, and trigger one or two new thoughts. We're really glad that you're here. And now I invite you to join in a moment of centering silence so we can be fully present with each other. That's enough silence. Please rise for our in-gathering hymn. There'll be freedom in that land. There'll be freedom in that land. There'll be freedom in that land. There'll be freedom in that land where I'm born. There'll be freedom in that land. There'll be freedom in that land. There'll be freedom in that land where I'm, there'll be justice at There'll be justice in that land. There'll be justice in that land. There'll be justice in that land. There'll be justice in that land where I'm born. There'll be justice in that land. There'll be justice in that land. There'll be justice in that land. are opening words in the lighting of our chalice. Come, you accidental pilgrims, you who find yourself on a journey of surprise and wonder. Come, you who emerge into this place as an act of liberation.  Come, you who bring hearts of all kinds, heavy hearts, rusty hearts, hearts broken open in revelation, hearts full of love to share. Come, you who seek courage and you who have more courage than you realize. Come, you who stand behind the curtain, gathering the resources to claim your truth. Come, you who have been in a bubble, you who are poise for transformation. We begin our story again, gathering courage, love, mindfulness, and a sense of purpose. We gather as people of all ages, of different abilities, different backgrounds, and different perspectives. We share a covenant, a direction for our journey, and a commitment to encourage and challenge one another to spiritual growth. We continue together reading Len Cox's words as our chalice lighting printed in your order of service. And together we say, this path will ask much from us. Let us move forward with love. Let us move forward with appreciation for one another. Let us move forward knowing we are not alone. Whoever you are, whatever your gifts, you are welcome to join this journey. I invite you to turn towards each other and offer a warm greeting. Good morning, come on up. Morning, oh, how are ya? Doing good, it's good to see you today. There's lots of space. Here they come, Winnie, you're coming up. Hey, good to see you all. So a little bit later in our service today, Steve, who just did our announcements, can you turn and say hi, Steve? Hi Steve. There he is, later on, Steve's gonna be talking to everybody in here about the kickoff of our stewardship campaign. And this year we really wanna start this campaign with thinking about all the wonderful things that we have in abundance here at First Unitarian Society. In abundance is this word that you have a lot of something. You can think of abundance as being like a bucket that's overflowing with water. Or those times when you're so happy that you start to giggle and you just giggle and giggle and you can't help but laugh out loud. And we see abundance everywhere in our world. Stars are a good example. There are more stars in the night sky than we can see or even count. And in the spring, which is just around the corner, I'm pretty sure, there can be wildflowers in the fields and there are so many colors. That's an abundance of blossoms. So have you ever tried to count the number of seeds in a sunflower? There are so many. It's an abundance of seeds. Or think about if we were on the beach right now and all that sand was all over, there would be an abundance of grains of sand. Or how about the number of blades of grass? I know it's out there under all that snow, but it's out there, right? Have you ever tried to count blades of grass? That's an abundance.  I think we can agree a gazillion. A gazillion's a good number. I think we can agree that we have an abundance of snow. And we have an abundance of good things here at First Unitarian Society too. We have an abundance of amazing people. They make this community great. They are people who share their time and their talents, who volunteer and help in your classrooms and share their gifts wherever they can. We also have an abundance of learning opportunities. The classes that you're in, the programs for grownups, the lectures, the workshops, everything. It's an abundance. And what about our music? We have an abundance of really wonderful music, especially when our choirs sing. Can you turn and say thank you to the choir? Thank you. Thank you. Look at them all over there. Do you have any favorite things about FUS that we have an abundance? What are your favorite things about this place? Any ideas? What do you like about it here? Coffee. Yeah. I thought Anya was gonna say that. Mo got it first. The coffee. How about the adults? What are some of your favorite things? Great religious education classes. Very true. Do you like your classes? What's that, Lauren? Aw, thanks, Lorna. I didn't even pay her to say that. Say the ministers. Cabaret. Cabaret. You just gotta sing it for some reason. Friendship and hugs. We have an abundance of friendship and hugs here. We also hope that you find other things that are in abundance here too. Things like friends and love and joy. All of those help us create a better world. You know the other great thing about abundance? When you realize how much you have and all the things that you have in your life, you just wanna share it. And it just makes you feel really good to share. And think about it just like those giggles. Sometimes when you get the giggles and it just bubbles over and out and you can't stop, you just have to share it. When we realize all the wonderful things that we have in abundance, out of joy and gratitude, it makes sharing all the more meaningful and it feels really, really good. So we are glad that we have an abundance of you here with us this morning and we're gonna rise in all the ways that we do and sing you out to those fantastic classes with him number 1003. This is a round and we'll sing it twice through with no repeats. Just two times through and then we'll sing it again as a round and this will be team one and this will be team B. Let's see after class, Steve. Where do we come from? Where are we? Where are we going? Where do we come from? Mystery, mystery. Life is a riddle and a mystery. Where do we come from? Group one, let's try. Where do we come from? What are we? Where are group two? Here we go. Where do we come from? What are we? Mystery, life is a riddle and a mystery. Let's do it one more time. Where do we come from? Where are we? One more time. Where do we come from? What are we? Where are we? Life is a riddle and a mystery. Life is a riddle and a mystery. Maybe seated. So it is a new month and a new theme and as we begin our journey into, well, journey, our new theme of the month, we invite again our worship team to help us explore it and perhaps you've noticed that every month there is a slightly different way that we engage the worship team and sometimes that's entirely intention and sometimes that's just the members of the worship team that are available that first Sunday, but either way we try to give you a variety of ways to engage the theme through the worship team interaction. Sometimes it is a couple of us on the worship team that give us a little more time to explore with a little more depth, but very often such as this month, we begin with the entire worship team and offer a variety of understandings of what it means to be a people of journey. And that is both an opportunity to invite you to find your own way of connecting and a reminder that just as the worship team has to begin from their own deeper place of connection to really engage the theme fully, the same is true for each of you.  And so we begin that theme, but also today we think about the concept of stewardship and in particular the abundance of gifts that are essential to this place, both in what is embodied in this congregation and what we bring in our own giftedness. We remember that this is a place that offers sustenance and connection and life changing and life saving support on our journeys in life. As I began to explore my own connection, I looked at the root, the origin of the word journey and I was interested to find out that it comes from the old French word journey and that in particular that word is translated in a variety of ways, but the common ground of the translation is the word day, like a day's length or a day's work or a day's travel. And that understanding makes its way into our language in a variety of ways. For instance, at one point, a journeyman was a way of understanding a person who was a day laborer. And when we are trying to take our thoughts about a particular day, we will enter those into our journal. So while it is often the case, when we hear the word journey, we think of the big picture of what we do with our lives. An important reminder of the source of the word is that it is always also inviting us to be more fully present in this moment and this day, understanding that really that is the place that we intersect meaningfully with our lives.  And so week after week, we come to this place to try to live into that understanding in a more meaningful way. How might we do that work today? Well we might begin with the idea of Simone Vai who reminds us that the beauty of the world is the mouth of a labyrinth and that that labyrinth may be inviting us into the beauty in how we engage the width of dreams that are a part of our lives. Perhaps it is some possibility that is happening in your job and career right now or the idea of maybe a new job. Perhaps for you it is some new relationship that is budding and feels full of potential. Perhaps it is some way in your life not yet fully in words, but in an idea that there is new possibility. However it is that we engage it. This time gives us the chance to think about that possibility, to understand it both in the specificity of who we are now in the larger context. It is also an opportunity for us to live into the reality that often those bits of beauty do not turn out the way we expect them to. That the possibilities in our job don't always pan out the way we wish and often what we do is a challenge day to day and our relationships are sometimes as much a source of pain and difficulty as they are of wonder and joy. And that that truth is a human reality that we all share in some way in various times in our life we will feel disappointed and disengaged and at least for a while lost. And the question will be will we focus on that which is lost or the new possibilities that are offered? The Reverend Eric Martinez Resley wrote, as it happens there is much that awaits us in our lostness. Much to be excavated, examined, even exalted in not yet knowing what will be we are offered the opportunity to appreciate what already is the things hiding in plain sight. Afraid relationship for example may reveal our deeper needs. An unfulfilling career may motivate us to seek out a mentor and any misstart or misstep may remind us of our own human fragility which is an invitation to open our hearts and sensitize ourselves to the suffering of others. That powerful place of connection and compassion. Over and over again in this place we live into the reality is by suggest that if we do not lose courage, if we go forward walking in the labyrinth we eventually will arrive at the center which is the place of deep holy connection. And so in this place, week after week through our communal experiences of worship and the crucial work of our children, youth and adult religious education and remembering again and again that we need a place of spiritual deepening that gives us the tools not only to recognize the importance of the places where we feel connected but also in the possibility of our lostness as well as an invitation to something new. So in our spiritual exploration in this place we will continue to honor and utilize all of our human giftedness because we need all of it to be complete. We will continue to draw on the gifts of intellect and wisdom in our services. We will continue to use that great wisdom in our religious education. We will hone our abilities to tap the power of our feelings in concert with discernment and strengthen the emotional intelligence of our community as a whole. We will speak diligently to the power of our work for justice and equity. We will seek better understandings of the gifts of our body and in our movement and our being and our sexuality and the gift of breath itself find our wholeness. So we celebrate this place that seeks to reorient our journey, to recollect our scattered thoughts into places of deeper direction and discernment that welcomes all that we are to embolden the truth that lostness itself is a gift in our lives. As we journey together in this place into that deepening, we are reminded of the truth of the words of Joseph Campbell. Where we have thought to travel outward, we will come to the center of our own existence and where we have thought to be alone, we shall be with all the world. May that journey bring us to deep celebration today and in the days to come. This reading comes from the great South African leader Nelson Mandela. I have walked that long road to freedom. I have tried not to falter. I have made mistakes along the way, but I have discovered the secret that after climbing a great hill, one only finds that there are many more hills to climb. I have taken a moment to rest here to steal a view of the glorious vista that surrounds me, to look back on the distance that I have come. But I can rest only for a moment for with freedom come responsibilities and I dare not linger for my walk is not yet ended. Working for peace and justice has long been an integral part of my religious life and spiritual practice. So I'm excited to reflect with you on the abundance of social justice opportunities here at First Unitarian Society. Inspired by the work of a Unitarian Universalist minister, the Reverend Richard Gilbert, we can think of social justice as having five pillars. The first pillar is service. This includes those hands-on activities that help others. These are easy to think of for me, raising money for our partner church, which we happen to be doing next Saturday, cooking and serving a meal at a homeless shelter or collecting donations for the Humane Society. These acts of service can give us opportunities to build relationships with one another and to grow spiritually. The second pillar is education. This helps us as a congregation understand specific social justice issues more deeply. First Friday film nights, mayoral forums, and adult religious education classes are all excellent examples of the ways we educate ourselves about timely topics. Today's two o'clock event about the Great March of Return is another opportunity to learn about peace efforts in the Middle East. The third pillar is organizing. This pillar seeks to establish grassroots partnerships in order to make changes for social improvement in regional and statewide coalitions. By partnering with Voces de la Frontera, FUS is siting with immigrant communities, and by organizing through Moses, folks have been working to improve the Dane County Jail as well as the city and county law enforcement policies. The fourth pillar is advocacy. This is about raising our voices, speaking on behalf of people or causes we stand with. For example, wisdom's upcoming Madison Action Day on Tuesday, March 26th is a chance to engage in advocacy. Over 1,000 people from across the state are expected to gather at the state capitol to lobby representatives about important issues in the proposed state budget, including transportation and criminal justice reform. The fifth and final pillar is witness. This includes public displays of solidarity. Think of climate change rallies, the annual pride parade, or the interfaith prayer vigil held here last fall after the shooting at the Tree of Life synagogue. This coming Wednesday on March 6th, folks will gather for a candlelight vigil at the Social Justice Center on Willy Street to honor Tony Robinson on the fourth anniversary of his killing. All of these are examples of bearing witness. Indeed, there are an abundance of ways here at First Unitarian Society that allow us to live out our unitarian universe-less values through service, education, organizing, advocacy, and witness. I am grateful to have fellow travelers like you as together we, and in the words of Nelson Mandela, walk that long road to freedom. Poem that the choir just sang part of is called Ode by Arthur O'Shaughnessy. I'll read what we just sang for you, but there are eight verses after this that I won't read unless you really want me to. We are the music makers and we are the dreamers of dreams, wandering by lone sea breakers and sitting by desolate streams, world losers and world forsakers on whom the pale moon gleams, yet we are the movers and shakers of the world forever. It seems. Well, as a music maker, I find this poem incredibly affirming, it makes it sound like the world would be lost without artists and maybe that is so. And that is what I'm going to speak on today, the role of an artistic mindset in our future. We sang earlier a hymn, where do we come from? Who are we? Where are we going? The text of that hymn was actually written by painter Paul Gauguin and that is the title of the painting that he felt was his best work. And in his career, he traveled to Tahiti and anywhere else to answer those questions. Where do we come from? Who are we? Where are we going? We do not need to be an artist. For our mind to work artistically. Artists create for a living. We specialize in discovering new avenues of beauty and expression. And in the process of so doing, often discover something about humanity that is worth considering as our society matures. But artists aren't the only ones who think like artists. A creative spirit is not limited to those in the creative arts. So what role do the arts play in society that we can learn from as non-artists? Well, art can serve as an archive of the past. When you go to a museum to see Gauguin or some other painter, sculptor, you're seeing a vision of the past. But we don't know is what the artist was thinking when he or she created the work. Were they trying to envision what for them was the future? Art also serves as commentary on the present and inspiration for the future. The artistic mind builds in fantasy, builds the future in the mind's eye, builds the worlds outside the world. And it doesn't take an artist to do that. A politician with vision doesn't necessarily mean that that politician had any artistic training or background. One of my heroes, Robert Shaw, said, for finally the simple truth is that everyone is an artist whether we want it or not.  And I returned to Arthur O'Shaughnessy's Ode for a line that we didn't sing, but which is germane to our conversation today about stewardship and journey, where we have been, where we are, where we are going. He writes, for each age is a dream that is dying or one that is coming to birth, maybe both. These are the words of the Reverend Victoria Safford. She calls them a map for the journey in progress. Here is where I found my voice and chose to be brave. Here's a place where I forgave someone against my better judgment and I survived that and unexpectedly, amazingly, I became wiser. Here's where I was once forgiven, was ready for once in my life to receive forgiveness and to be transformed. I survived that also, I lived to tell the tale. This is the place where I said, no, more loudly than I thought I ever could and everybody stared, but I said, no, loudly anyway because I knew it must be said and those staring settled down into harmless, ineffective, grumbling and over me they had no power. Here's a time and here's another when I laid down my fear and walked right into it, right up to my neck in that roiling water. Here's where cruelty taught me something and here's where I was first astonished by gratuitous compassion and knew it for the miracle it was, the requirement it is, it was a trembling time. And here much later is where I returned the blessing clumsily. It wasn't hard, but I was unaccustomed. It cycled round and as best I could, I sent it back on out, past the gift along. This circular motion around and around has no apparent end. Here's a place, a murky puddle where I have stumbled more than once and fallen. I don't know yet what to learn there. On this side I was outraged and the rage sustains me still, it clarifies my seeing. And here's where something caught me, a warm breeze in late winter bird song in late summer. Here's where I was told that something was wrong with my eyes, that I see the world strangely. And here's where I said, yes, I know, I walk in beauty. Here's where I began to look with my own eyes and listen with my ears and sing my own song, shaky as it is. Here is where if by surgeon's knife, my heart was opened and here and here and here. These are the landmarks of conversion. Each one of us would be able to draw a map such as the one Victoria describes, one that has landmarks that mark those conversion moments in our own lives. Moments of unexpected forgiveness or overwhelming compassion, paralyzing pain. We could each create our own map with these defining life moments marked for all to see. The great student of the world's religions, Houston Smith once claimed that we humans are nothing more than embodied souls undertaking spiritual journeys. And we are each called to act upon what we find. His words echo our fourth principle, the free and responsible search for truth and meaning. And I would add to our principle, his belief that we are called to act upon and live out what we find in our search. A crucial piece of being able to do that work is to find those spaces and places and people where you have the time and the support of others to do the work of reflection. Our small group ministries, one of the important and life-giving aspects of our life together here. Our chalice groups and exploration groups and journey circles, these are such spaces. What we hope is that these small groups become places where you can reflect on your own experience, on your landmarks of conversion, the times when you have been surprised or loved or hurt. These are communities where you are welcomed in and welcomed home, sustained and nurtured on your journey toward wholeness. The late Reverend Forrest Church said that to be who we are is to offer to the world the greatest gift we can give. To invest our lives and all that we do with sincerity and authenticity and deep commitment leads us into relationships with other authentic selves. And in entering into those relationships, relationships that are sacred in the true meaning of that word, we cannot help but bring our collective power to bear against the forces of injustice, hatred and oppression. Our collective wholeness will by definition heal the world. We all yearn to live lives that matter, to share our vulnerabilities and our sensitivities, to offer them up to others in a spirit of acceptance and hope. In this way, we can heal ourselves and help in the repair of the world. We can do this, one person, one relationship, one small group at a time. And I now invite you into the giving and receiving of our offering. Our outreach recipient is Journey's Mental Health. And as we shared with our children, when we give from abundance, it feels really good. So we thank you for supporting their good work today with your generosity. Thanks to the choir. Thanks to all of you for your generosity during our offertory. I think it's very fitting that the name of the organization we are supporting with these contributions is Journey Mental Health Center. And if you're familiar with Journey, you know that the work they do for people in our community is extremely valuable. So thanks for that generosity. And we also want to thank the generosity of volunteers who make sure that the service runs smoothly. This is a special group of people. You can join them. Before you join them, maybe you should give them a hug or add them to your will. Something. Because we really appreciate Richard Scoby running the sound system. Lynn Scoby, who was our greeter as you came in out of the cold, and I'm sure you were as happy as she was that the service is indoors instead of outdoors. We're grateful to Mark Hill and Dorrit Bergen for serving as ushers for this unruly crowd. Richard DeVita and Gene Hills for hosting the coffee that we will enjoy in a few moments. And Karen Rose Gredler for hosting the information table out in the commons. So a couple announcements before we conclude the service today. The first two announcements are about music. And the third announcement is about the annual stewardship campaign. First, the music announcements. Music Sunday this spring will be April 14, which happens to be a Sunday. And the music that will be performed at that concert is going to sound very familiar to you because you just heard a taste of it during the offertory. That mass will be performed with a professional orchestra and soloists, and you get to join the singers if you would like. No experience is necessary. You just need to be able to move your lips. And Drew will make sure that you get all the rehearsal and preparation that you need. Just show up. No additions are necessary. The rehearsals and preparation will be Thursday evenings and or Sunday afternoons. See Drew or email him if you have any questions and you would like to participate. The second musical announcement is our annual harpsichord recital. That will take place in the landmark auditorium a week from today, Sunday, March 10, at 3 o'clock in the afternoon, featuring compositions from the court of Louis XIV, also known as Louis Catoires from France. Some featured musicians and the tickets are $20 at the door or $12 for seniors, students, and veterans. You don't have to be all three to qualify for the discounted $12 price. That's next Sunday at 3 o'clock in the afternoon. And now for my favorite part of the day, and that is to talk to you a little bit about the annual stewardship campaign. It used to be named the annual campaign. But we decided that during this transition year we would rethink the concept of our fundraising campaign. It's a campaign that provides almost all of the money needed to run this enterprise that we call the First Unitarian Society. And as you know, FUS is going through a transition period right now. And I've always believed that transitions are an opportunity for people and organizations to show what they are made of. And we've decided that the First Unitarian Society is made of stewardship, a sense of collective responsibility for something bigger than ourselves, hence the stewardship campaign. And speaking of abundance, I'm enormously excited to tell you that we are starting this campaign from a position of abundance. Because during the quiet phase, and we'll be quiet no longer, but during the quiet phase of the campaign, we've already raised $400,000 in pledge commitments from members of this organization. That's more than one fourth of our goal. And one half of the pledges represent an increase over last year's level. And one third of the pledges include a multi-year commitment which qualifies those members as sustaining stewards. So we're giving people an opportunity to be a sustainer, which means a multi-year commitment so that your gift can keep on giving longer than just for the one year. Hence, we're no longer calling it the annual campaign. It's the stewardship campaign. And I'm excited about the sense of stewardship that's already been demonstrated. And because of your stewardship, we will be able to fully fund and resource all of our religious education and youth programming so that every young person can feel valued here. And because of your stewardship, we will be able to continue providing and growing our holistic programming for families so that families can thrive here. And because of your stewardship, we will be able to fully resource and staff all of the programs and services that this organization offers so that FUS can be truly a spiritual home across all generations. And because of your stewardship, FUS can become an even stronger voice for social and environmental justice in our community. Because of your stewardship, we will be able to host more community events in our welcoming spaces, thus deepening our connection to the larger community, while at the same time generating a nice revenue stream to support this enterprise we call First Unitarian Society. And because of your stewardship, we will be able to fully leverage our world-class music program as an additional community outreach tool. Imagine that. So that is the kind of abundance we can create for ourselves, our community, and the future generations, who so enjoyed today's message for all ages. And they got kind of excited about the idea of abundance. I'm excited for the next month or so because throughout March, we're going to be promoting this campaign. And it will stop, I promise, at the end of March. Please don't make us call you. Instead, circle the date of April 5 on your calendar. Because Friday evening, April 5, we're going to celebrate the successful outcome of our abundance and of this campaign of stewardship. Friday evening, April 5, a family event, a party, right here. And I promise to write a song for it, OK? But only if we reach our goal. So keep that in mind. But we're not just going to celebrate April 5. We're going to celebrate every weekend in March because we're going to provide prizes to people who participate in the stewardship campaign, sharing our abundance with you. And the prize is a $25 gift card for food fight restaurants. So let's see who the winner is this Sunday. We had a winner last night at the Saturday service. The winner earlier this morning at the 9 o'clock. And our winner of a $25 gift card for food fight restaurants is Janice Kordes. Janice, are you here? Well, come here, Janice. Thank you, Janice, and to almost 100 other people who have already participated in the early stage of this campaign. Now, the campaign has been in the quiet phase, but we are quiet no longer. And you've received your pledge envelope already. You can also donate online. And we have two staff members from FUS, Cheryl and Florence at the back of the room. They're usually pretty shy, but today they're up and waving. They'll be staffing the table. For those of you who want any help completing your pledge online or any other questions you might have. So the only question I have is whether we're ready to demonstrate our stewardship and respond in a spirit of abundance for this organization we call First Unitarian Society. I think we are indeed ready to do that. I'm excited about it, and I'm starting to work on my April 5 song already. So thanks for your participation. We'll be back at you every week to celebrate our progress. We're feeling really confident about this. And we're feeling so good, we're going to invite Drew up here right now to lead us in our closing hymn, Drew. Hymn number 116, I'm On My Way. We'll do two verses, verse number one and verse number five. I'm On My Way, to the freedom land. I'm On My Way, to the freedom land. Great God, I'm On My Way, and I won't turn back. I'm On My Way, and I won't turn back. I'm On My Way, I'm On My Way. Great God, I'm On My Way. May you be brave enough to expose your aching woundedness and reveal your vulnerability. May you speak your deepest truths, knowing that they will change as you do.  May you draw, paint, sculpt, and so, showing the world your vision. May you write letters, poetry, biography, slogans, graffiti, the great novel, laying bare your words to love and hate. May you love, even though your heart breaks again and again, and until the end of your days, may your life be filled with possibilities and courage. We extinguish this chalice, but not the light of greater wisdom, not the fire of that possibility and courage, not the warmth of love and community. These remain in our lives until we gather in this place again. I invite us to take our seat one more time to receive the gift and worship of music.


Hello? Is that fine? Everybody can hear me? Great. So, welcome, everyone, to this talk on Search Index. Let's see to avoid the feedback. Search Index is a persistent full-text search engine for the browser in Node.js. It's written in JavaScript based on level DB. So, my name is Matz. I have a degree in mathematics, but I do search at Comperio. We're a consultancy. We mostly do elastic search and solar. And on my spare time, together with a good friend and colleague of mine, we build Search Index. So, I'd really like to thank all of the volunteers and people who made this conference. And thanks for inviting me. We're having the chance to talk about Search Index. Switch? So, that's better, presumably. Right. So, Search Index is a project that saw light in 2013 by a good friend and colleague of mine, Fergus McDowell. It was originally the underlying technology of Norge. Norge is a search server like elastic search and solar that you can install with NPM. So, elastic search and solar are heavy Java sort of machines that needs a couple of servers to run your application. And Fergus, at the time, thought that you should be able to have search by just simply NPM installing it. So, when I joined the project in, like, last fall, our priorities kind of changed because at the time, like, elastic search and solar, they became so much better. Like, elastic search, you can get up running in less than a minute. So, even though Norge is even quicker by NPM installing it, sort of that niche fell through. But at the same time, we realized that Search Index actually can run inside a browser. And there is some amazing technology that lets us do that. And perhaps one of the most important one is the level DB project. Before I tell you more about that, I just want to say what kind of features you can expect from Search Index. So, Search Index is a search engine. It searches documents for full text. So, you can do search. You can have facets and filters sort of count aggregations and then filter on specific fields matching to some value. It has a matcher, although it's not fuzzy at the time, but we're working on it. It has stop work, stop work removal, support for snapshot and replication, which we experiment with doing over HTTP. And you can wait individual fields and do the leads and updates. So, it's basically what you'd expect from a modern search engine without, like, the fancy aggregations that solar and elastic search do now. So, as I said, we're based on level DB. Level DB, if you don't know, is a key value store developed at Google, inspired by the Bigtable database. And it's actually part of the implementation of the index DB spec in Google Chrome. So, since this is a key value store, we actually store all the contents of the search engine, all the term frequency, inverse documents frequency, everything is stored as keys and values in this database. So, actually, the recent search index works is because level DB is lexicographically sorted, so we just pull out ranges all the time from the database. So, but level DB is an interesting project because it's written in C++, but it has bindings for Node.js. So, it's split up into two halves, like, level down and level up, and level up is sort of the interface that we interact with. So, level up from level DB.org is a Node.js project that aims to provide a common portable interface to a multitude of level DB forks. So, by talking to level up and not directly to some low-level database, we can actually switch out the back end. So, search index can use any sort of level up compliant database as a back end. And this is an important step of our journey of making a search engine run inside your browser. At the same time, search index is written in JavaScript, but for Node.js. So, we have a bunch of require calls and stuff that you wouldn't normally do in a browser, but that's where Browserify comes in. So, if you don't know this already, I'm sure all of you uses it, Browserify turns your code that has require into a sort of bundle. So, it goes through your code, bundles all your require calls into a single file, which you can include in your browser. And together, sort of level up and Browserify makes search index truly back end agnostic. So, on the server side, we can run search index on top of level DB, on MongoDB, on Redis, and on the client side, specifically in browsers, we can run it on index DB or even local storage. So, if this was a search conference, like all of you would sit here and, like, shake your heads and saying, this is madness. This is a JavaScript conference and we are JavaScript people. So, there are sort of cool things to actually having a search engine running inside your client. So, first of all, depending on how much data you have, you could lower the bandwidth costs of your users and yourself as an app developer. In a traditional search scenario, the user sends lots of search requests and you have to respond to them over HTTP and it actually allows you to have lower hardware costs as well. If you replicate sort of a search index as a file and then replicate that index in the browser, what you only need to do on the server is actually create that index once and serve it by a static file server. So, a good friend, Espen, he likes to say that search index scales naturally. What we mean by that is if you have an elastic search cluster that has, like, 1,000 or 10,000 requests per second, chances are your cluster is on fire. You're doing everything you can to stop it. But if you have 1,000 or 10,000 search index clients in the browser searching one time per second, that's nothing for search index. So, that's sort of one thing to think about. If your data isn't huge or if you can break it into small pieces and tailor each individual user with a small ball of data, then perhaps moving search to the client is for you. So, another good point is that search index runs offline and some people say that the best thing you can do for app performance is making your app run offline. And by increasing your performance, you can have greater user experience. And there's also this point that we tend to forget that people actually are offline. Here in India, I can't do roaming on my phone because it's crazy expensive. So, I'm offline all the time. All my favorite apps don't work. And on the train, on my way to work, my phone is offline.  And you should seek to do that. So, now I told you what this talk is about. And it's partially about search index. And it's also about moving search into the client. I told you some reasons about it, about how and why you should do it. And now I'm going to show you exactly how search index works. So, to install it, you do MPM install search index.  So, we're working our way towards 1.0. And sort of a bunch of the things you'll see here might change in a couple of weeks, a couple of months. But it's also a great opportunity to come in and contribute to the project. Because at the time, it's Fergus and me, we're the only active contributors. We work on this every day. And we rely on our users to sort of come with feedback. So, in your code, you simply do require search index. And that exposes a function that takes in an option subject. It can be empty. But this is where you typically switch out your low level database. So, by default, we use level up. So, by default, it binds to level DB. But you could put here MongoDB or Redis or your database of choice as long as it's level up compliant and has sort of a down component that somebody has to write. So, adding documents is very simple. You do SI add. And data here is either a single JavaScript object or an array of JavaScript objects. And once the callback is executed, and the error object is null, then the data should be indexed. Since this is a key value sort of situation, in order for it to be computationally feasible to do filters and facets, we require you to actually specify that in an options object. It's the argument number two. If you want to sort of provide account aggregation on some field, or let the user filter on some field. But we don't require that if all you need is full text search or match your functionality. So, this is what a typical document looks like. None of the fields are actually mandatory. But if you don't specify the ID field, we'll generate one for you. So, this is a document. Indian banks provide record low interest rates. Pretend there's somebody in there. It has just one topic and then a country. So, searching this kind of data is simple. You do an SI search, and then a query object, which comes next, I'll show you. And then you supply us a callback which we execute with error and response objects. So, again, if error is null, then rest.hits should hold the array of hits that matches your documents. So, this query object could look something like this. So, this is also subject to change. But right now it's a simple API and lets you do like cover quite a lot of use cases. So, if you want to search for Indian bank in all the fields, you specify sort of the star here to indicate what field you want to search in and then the tokens, the words in NRA. If you want to specify a given field, you do title as the key and then Indian bank is the value. And this query object also lets you search in different fields. This is very typical. If you want to say, I want to document that has India in the title and it mentions bank in the body. So, this is an and query. We, as of now, don't have support for an or query. So, here's the kind of like not so beautiful thing, and it's that even though you're only searching for one token, you have to wrap it in NRA. This is changing, and perhaps you're the one who implements it. So, I told you a bit about facets. Facets are sort of functionality that is a count aggregation. It's typically what you find on Amazon when you search for a TV and on the left hand it says 40 to 42 inch, there are 46 TVs. 50 to 55, there are 30 TVs. So, for the document or like documents like I showed you before, if you specify facets and then country and then an object which can have some options but doesn't have to, you'll get out something like this. It'll tell you like, oh, we found six documents that have the country field set to India, two that has the country field set to USA, and one that has country field set to Norway. So, the counterpart of facets are filters. And what you typically do is you expose the facets to the user, the user clicks on it, and then you put that in a filtered query. So, in order, if the user clicked on India and you want to filter on India, this is how you do it today. It's a bit ugly because this is actually a range query. So, we're actually filtering on the country field from the value India to India. So, if you wanted, for example, to filter on India and Norway, you wouldn't do like the thing you thought you'd do to switch out the second there with Norway, you would have to specify another range. This is also probably changing in the next couple of months. But still, it allows you to do what you want to do just in a sort of crooked way. So, I'll show some examples. I'll show you how to use it in Node.js, and I'll show some examples of how we use a search index on the client. So, this is sort of the simplest example I can think of. This is where we just create a data array. Here we have two documents, ID 1 and 2, and we instantiate search index where we can give it sort of an index path. And the index path is the file path to the level DB index. So, once that's done, that's a synchronous operation, we can add documents. So, we do SI add data. If there's an error, just return, ignore everything. Then you can search in your data. So, searching is simple as I showed you. SI search, query, specify what fields, cool. So, we can run this. We get back. This is the response.hit subject. And you can see the score for each document and the document itself lies in the document property. So, we can switch out this field with the title field, and it still works. We find sort of the documents relevant. But if you switch this with ID field, I actually don't think you can search in the ID field. So, if we specify some other fields here, like body, hello, then body, hi, we run this again, and we try to search in this. Again, works. But if we switch this field with body now, we shouldn't get any hits. So, the hits is empty, as you see here. A bit confusing with the old outfit. So, this is actually really simple to get search index up and running. The data array here, it can look like anything. It just has to be a JavaScript object. And what we kind of tend to focus on is actually running search index inside the browser now. So, I'm going to show you a simple example of search index running in the browser, storing data in index DB, and just show you how it works with facets and filters. And please, please excuse my limited HTML and CSS knowledge, because this is really ugly. So, here is searching index running on index DB.  So, this is just a test document, no, a test dataset which we like to use. And here I've provided some facets on the places field. So, it says that there are nine documents that are from USA. So, if I click that, the total hits changes to nine. If I click Argentina, I should only have one document, and that has the places set to Argentina here. So, normally, if you do a query here, you would update the facets, but I didn't have time to do that, so I'm really sorry. But it still works. You get the correct documents back. So, let me show you just, is that too small for? Make this a bit bigger and show you what happens here. So, this is index DB. And we have sort of, when you do, when you specify the index path, you specify also sort of a namespace in index DB. So, here we have a table which is what search index, how to search index source data as of today. So, it's a bunch of keys. It will start with delete document, which is kind of not good because it takes up a lot of space. We're changing that as well. But you can see here that it actually stores data inside the browser in index DB. And that makes queries very snappy, like you say. It's just a JavaScript and an index DB operation. So, if you have bad internet, this would be miles faster than doing sort of a search over HTTP. So, I have this different example on my screen at least. Let's see. There it's back. Yeah. So, this is actually search index storing data in local storage. Yeah. Not certain what happens with the screen here. It doesn't like this. Example. Just one second. We'll be back. Yeah. Okay. Yeah. So, this particular example is actually storing data in local storage. And it looks like this. Local storage isn't really feasible for storing a lot of data. It's just cool to see that you can actually just switch out what kind of database you want to run on. So, I'm going to show you what that looks like. So, CD local storage example, main.js. And actually, yeah. So, these two lines, it's all you need to specify to actually switch out the database. So, here we require some local storage down library, which provides low level bindings for local storage. And you just specify that in search index. It really doesn't care. I also want to show you an example with search index and replication. So, search index can replicate itself into a file. That's really just a level DB operation. See, HTTP here. And you get this sort of file. That's the raw. It's just an adjacent array of all the documents. And now I'm going to show you an example that has JavaScript that actually goes out and gets the search index over HTTP, which is kind of what you would do if you had a website or a web app that had generated an index up front and your user logs on for the first time and you replicate the data. So, this is search index replicating a file over HTTP. Probably should show you the code first. So, just a simple AJAX call. Cache false. And then there's an API for replicating a batch. And once that is done, we can search in the data. So, once we see DB serialized here in the console, we can search in it. So, here I've specified level.js, which is the project that actually makes search index run on index DB. So, let's see how this works. I'm going to head up to the network tab. Whoops. That seems to work. Here you can see that it's done request. And it got the whole index as a response. And there's sort of a drawback of doing this, of getting the whole sort of index pre-made. The index is generally bigger than your data because it needs to store the data for each field in a different key. But the sort of plus side is the indexing is really a lot quicker. It doesn't have to do any calculation once you get the data. But if you have a lot of data, you typically want to gzip the raw data object and send it instead of the replica. So, here's the DB serialized that we can search in it. It's the same data as before. As proof, we have this HTTP example. And it's still in index DB. Yes. So, the last thing, last sort of cool example I have is there was a talk yesterday about JavaScript internals. Great talk. But it showed how like running lots of JavaScript can obstruct rendering of the page. It can hinder the loop that does that. And search index, if you give it like 1,000 documents, 10,000 documents, and it runs in the main thread of this tab, it's going to block the rendering of the UI definitely. So, I have this example where search index actually runs in a separate thread in a web worker so that once you load the tab, it chips off a different thread in the browser, indexes the data, and you search by actually sending messages via this API. So, just to go to this web worker example, so we have this main and worker code. So, this is the web worker. It does the work that you would normally expect from search index. It requires search index, it adds documents, and it has an event listener, which is like the inter thread communication error. So, we listen on message and we expect a query. So, we just search for that query, and once we have the result back, we just send it back. And this is sort of the code that you put inside your HTML. So, we require this WebWorkify, which is just a nice way to package the web worker code made by the same guy who made Browserify. So, the rest of the code is the same. Let me show you how it works, actually. This is search index running in a web worker. So, we can search here. The thing is, we won't actually find the data stored here in index DB because it doesn't live here. It lives somewhere we can access through some other inspector, but not this one. So this is actually how you would sort of do complex and hard operations on your page. If you'd like to index your data instead of replicating it, you would typically run it in a web worker or even a service worker when that API sort of gets a bit more mature. Yeah. So, this is what we do today. If we try to replicate big batches, and we do all the complex work inside a web worker, and really, if you're indexing, that is a lot of complex work. It has to calculate a lot of keys, and if you have updates for your documents, that's even more resource-intensive, so we do that in the web worker. So, in the future, there are some things we'd like to do with search index. So, one of the things we realize that we probably don't need in the browser is the functionality of indexing. So, if you're going to replicate either way, you don't need the extra code for being able to add documents on the fly. So, we plan to make modular builds, sort of like the core of search index is only less you search in your data, and then you have to sort of specify if you would like to be able to add documents. As of now, there's options that tells you if you want to filter on data, pass it on data, and be able to delete data. If you make it undelegable, the index size gets smaller. So, since search index is based on level Db, which has this really nice streaming API, we're thinking of rebuilding our API as well, top of that. And there's quite a lot of work to do with the index structure to get the keys and values sort of smaller. And, yeah, so this is all in the pipeline. So, there's one, there's one caveat with search index as opposed to having a search server or a search cluster with elastic search for solar. And that is like the amount of data. If you want to actually run a search on the client, you probably shouldn't do that with like a lot of gigabytes of data. You should do that with a couple of hundred megabytes at most. And this makes it sort of unfeasible for the sort of big data revolution. But we sort of also think that you should embrace small data because if you have lots of individual users with individual data, chances are like when you look at it all at once, it's a big blob of data. But if you look at it on a per user basis, maybe it's just small blobs of data corresponding to each user. And if each user only needs this small amount of data, you can sort of generate that index and serve that to that user. So that's how we like to sort of see search index fitting in the next couple of, well, in the future of search and data. So I'd love for some of you to get involved by asking a question. There was a guy who came up to me before the talk, asked a question about a use case. That was awesome. Please do that after the talk. We'd love for people to bring it to new platforms. Sort of, yeah, make it run on electron. For instance, there was a talk here yesterday about that. I haven't tried it yet, really want to. Just make an app, submit a pull request or issue. And we're really welcoming to people who do this. And you'll get a lot of love if you even just post a comment or something. So you can go to github.com, slash Fergie McDowell, slash search index. And yeah, that's it. Thanks a bunch. Questions? Hi. That was great to know about search index in Node.js. So my question is, you know, when it comes to performance benchmark, how does it compare with solar and maybe elastic search? Well, if you factor in the sort of cost of doing HTTP requests, you will have a very competitive search engine. But doing so search on like, on big data on the server, elastic search, and Lucene, the things running on Lucene will be faster, I guess. Sort of the thing you get from it is having a search server running in Node will demand a lot less resources. We have all clients who need five or six servers to run search for their users just because they need Java and elastic search and solar. So you sort of trade off a bit of speed. If you go for the, if you go for a Node.js version on a big, big data set, but on the other hand, if you, if you go for a sort of moderate data set on the client, you gain a lot from not having to do those HTTP requests. One last one. Does it support geolocation searches? Again? Special searches? Does it support?  Oh, yeah, that actually works by geohashing. And we have this, you can do numerical ranges, but it's a bit, it's a bit weird today. You actually have to pad your numbers in a special way because everything in level to be a strings, but we're switching out like the whole way of storing data. So we're encoding it quite since that we'll be able to support that more natively. Hello. Where are you? There you are. So I have a question like you give the example of your code, how is search engine, search index works? There is a part where you initialize the code request, request the module and option local DB. But you haven't defined any callbacks. When it's load, how we get the notification that data is loaded, or you every time I add or something you hit in database, I'm not sure how it's work. Not sure if I got that. Yeah, we're talking about this before that, like, yeah, yeah, the required. Yeah, yeah, you have started required the search index. Yes, and you give the option over there like which DB you want to use. Yeah, yeah. Okay, this one. Yeah. Yeah. And now after that, you are adding or something, but how we'll get notified that your DB is up, like in elastic search, we get the notification callback where is it said it is up, now you can insert or something. Yeah, so this is a synchronous operation. So at the next line, you're able to to interact with your database. But what if I get some error? So it will initialize the code SI or it's throw as an error. Oh, so you wonder if you have data in that database already? Oh, you actually have to you actually have to add it so that search index can do its relevant calculations and and like make the the keys it needs. It can sort of connect to a database and then work on the existing data. It has to re index it to in order to calculate all those term frequencies. Okay. Yeah, sorry. Oh, hi. Hi. Continuing this question, I wanted to ask, like you said with 100 MB of data, elastic search is I mean search index is competitive with elastic search. Can you throw some number? I mean, is it faster than elastic search? Or is it? I haven't properly benchmarked it. Okay. So I can't really say yes or no. But what I can say is that you'd be surprised how fast it is and written totally in JavaScript. And the level DB implementation is in C plus plus. So it's extremely fast. Yeah. I can't say a number of of what what amount of data it's feasible for but it's feasible for low and moderate amounts. But I wouldn't use this for the sort of big data revolution if you're Google or or Facebook. Thank you. Thank you for your question. One question. For this ad API, it's a synchronous call. So does your entire code for search has to be in the callback or does it return a promise so that I can sort of have the callback chain sort of like save from that? Yeah. So so as of now, you need to have your code in the callback. So that's also like one of the future things is the streaming API which would allow us also to sort of say if you don't supply a callback, we can give you a promise back. And that is something I really want to do. So yeah, I know that's sort of not so nice. Hi. Hi. How does search index works internally? Like MongoDB has its own query language. So does it converge the queries to MongoDB queries like that? As for the specific Mongo implementation of it, I'm pretty sure it gets ranges of keys. So that's how it works in level DB. So we go into the database and we get ranges of keys where we know we have stored data to calculate the score. So in MongoDB, probably we have all the same keys and values and we go out and fetch in the same way the relevant sort of ranges in the data source. So we don't use I don't think we actually use like MongoDB specific query language. Just use the getting ranges. So the client said queries are converted into database depending upon the database I use the query language. Yeah, so that depends on sort of the the database, the low level database library you use. So when I specify it here, sorry, in the local storage here, when I specify that I want to use local storage as my database, I actually don't know how this library handles this. I just know that since it's compliant with level up, it does what I wanted to do. So how it handles those queries internally. I don't know. I just say to level up, give me this range of keys. OK, so it's up to sort of that that specific library to to do the database specific things. We only interact with sort of the generic API on top. OK, thank you. Hi. Oh, yeah. First of all, I think great talk and great effort to simplify this. Thank you. Three questions. First, does it search incomplete stemmed words? What I mean is, can it search blue in blueberry? If I. So if you if you search for if you type L O in the title, you had cool. So if I do, if I type C O O, will it search cool? Yeah, we have this for that the sort of search functionality today is decoupled with what we call the matcher. So the matcher matches on incomplete terms. So it would sort of suggest you to to write cool and then you'd get the document. So it would find in the database the matching the closest matching term and suggest like that as a search term and the search would would do the rest. So that's also something we need to work on because the matcher is fuzzy. So if you write like cool with one, oh, it won't suggest cool. OK. The other one I had is on the client side search that you're doing, you said you're using local storage and local storage in HTML5 has some storage limitation. So when it exceeds that, how do you handle it? Yeah, well, as I said, it's not really feasible to run it on local storage. It's just as an example to show that you can run it on almost anything that has sort of this low level. Library. But in in databases, if you run it on in browsers, if you run it on index to be if you exceed something like index to be can take up to like 50% of your storage on your computer. But browsers handle this differently. So Firefox would probably ask you at sort of 50 megabytes as a user if you're if you will allow the app to store more than this. So we don't have to think about that. The browser will actually ask you in a dialogue if you'd like to allow more data to be stored. And one final question. So when I'm using the index DB or something on the client side, and let's say if I have to update the data, is that possible other APIs to update it on the client? Yeah, there's an update API. What it really does is you add. You add the document again and it goes in and delete the document and add it back to the to the index. So it's a bit slower than indexing it totally in you document, but you can definitely do that. But I suggest if you do this in the browser, do it in a separate thread, do it in a worker. Thank you. That's it. Thanks. That's all. Yeah, thank you all.


Hello, bonjour, I'm doing a little video to show you the book for of pepper and carrot and it's released this week so I'm very happy about it. There is also the French version on the Glenna publishing and I will try to explain a bit what I made in this book. So it's a 70 pages book containing 65 pages of comic. It's a collection of my most recent episodes of pepper and carrot and the book was made only with free Libre and open source software, the heart being made with Krita, the text with Inkscape and the publishing with Scribus. All of this of course on a Kubuntu Linux operating system. The full work is released under the Permissive Creative Commons Attribution license, a license that authorizes you to do derivations even commercially. It's a work I mainly made myself but I also received the contribution of translators for the story I wrote at first in French and also proof readers. You'll find all the credits on the first page of the book but you'll find also at the end of the book a snapshot of all the supporters of pepper and carrot as it was at December 2021. I also added two pages at the end, it's a little making off but to be honest this only purpose is to maintain the exact same page count for the book 1, 2, 3 and the art book. So all the books have the same thickness and it's also the same format so it's easier for me to manage cost, prices and also to write automation scripts when I need to manage the book. But how to make the books? I fully documented the process and you'll find the detail on my blog post and you'll find also in free access all the steps, specifications and also all my numbered trials of error and bad print proof that I did and all the explanation of why it failed. It really took me years of research to make it work and over seven print proof prototype to work around all the bugs I met on my way. In fact making these books for this type of printer was a real challenge mainly because of the PDF specification and the limitation that wasn't well supported by Scribus and also because of the proprietary color space that the printer deliver. Now this one conflicted with the main library of color management on Linux. In the end I could obtain a result that I'm really proud of and I even really could match the quality of a retail printed comic printed with offset. It's a different quality than the print on demand. It's not the same machine. It's not the same process. So I'm really happy that I matched this type of quality and with the Glenna version the French version is not with print on demand. It's printed with a classic offset and made by a publisher. So I really can compare both and see if I did a good work and that's okay. So I'm really proud of this. So thank you for watching the video. You can find the link for the books in the description or follow the blog post on my website. You will find everything of course. This is not my main income selling books. It's still a complimentary income. I'm leaving mostly thanks to your donation on Patreon or on alternative platforms. So thank you very much if you support my work and pepper and carrot on these platforms. And if you can buy these books because you are happy to get the comics and everything. Thank you very much about it. But this is very optional and not my main activity. Thank you for watching. Bye. Bye.


What is going on guys welcome to a new video. So I've got a pretty important topic to discuss with you in this one. I feel like it's going to help a lot of people out and hopefully motivate some people to keep going as well if you're not necessarily seeing the results that you hoped to see. So I feel like social media then can be quite bad sometimes at creating like a false reputation or representation of things and certainly dropshipping has kind of built this reputation of being an easy way to make money when that just isn't the case. At the end of the day dropshipping is a business and business is difficult and so it should be as well because if it was easy then everybody would be doing it and you wouldn't get that same kind of sense sense of achievement or sense of pride if you did it well. So for example then nobody goes around bragging about the fact that they can drive a car unless you're like 17 18 years old and that's because it's not like a unique thing to do. There's millions and millions of people that drive cars every single day. So within a year or two years of driving a car then that sense of achievement or that sense of pride kind of goes down and wears off a bit and you soon just become accustomed to being able to drive a car every single day and you don't get that same feeling that you would do like the day after you pass your test. Whereas with the business then or dropshipping it could be any business pretty much then there's not a lot of people that actually run businesses and run them profitably either. So when you do do it then you're going to get so much more of a sense of pride and sense of achievement and even still today like I've been dropshipping nearly three years now and even still when I hear that sales notification go off on my phone that chaching noise like I still get a buzz from it and that's because there's not many people that run their own business and run it to the point where that's what they can do for a living. What I'm trying to say then is that you want it to be difficult so that when you do achieve it then it will be worthwhile and it won't just be something that's been done millions and millions of times before. So what I've got then is I've got my phone just with some notes on just to run through make sure I don't miss anything out and now that I've been dropshipping for nearly three years and I've been doing YouTube as well for nearly one year one single year I've spoken to probably a couple of hundred people and I've got to know some people I still speak to some that have been for like nearly a year now and I've got to see where people make their mistakes and where people make their successes as well so I've got kind of like the main or the biggest two reasons why I see people lose money and I'm just going to take you through them now so hopefully I can motivate you guys to see where you might be going wrong so you can take a step back or you can do the actual opposite and just basically get on the right track. Now before we actually get into the points as always I am giving away a free one-to-one call with me on this video or you've got to do then to enter the raffle is simply like the video and leave a comment down below then make sure you tune in tomorrow where the winner will be announced and if you commented on my previous video then make sure you stay tuned to the end of this one where the winner will be announced so that being said then guys let's get into the points and the number one biggest reason then or the first reason is that people rush so they rush into things way too quickly before they get or grasp a better understanding of how everything works and why the key here is the why that is the most important word. I see it time and time again people rushing into it that have probably spent hundreds if not thousands on Facebook ads and sometimes not even seen one single sale and to me that's because they're trying to they're trying to get to where if they're at point A now they're trying to get to point B way too quickly and that probably partly because of that is because of social media there is a small percentage of people that get crazy crazy results really fast and really quickly when the true reality is that most people will probably lose money at least for the first couple of months before they start seeing any sort of return whether that's making 10 pound a month or making a thousand pound a month and that's kind of what you need to get your head around is that what you see on social media isn't going to be the reality so you don't need to feel bad if you lose money in those first few months but then at the same time you don't want to be too eager it's a good thing to be eager now don't take this completely the other way and say right I'm not going to do anything for the next six months because that's not what I'm saying what I'm saying is that make sure you grasp a full understanding of the following things that I'm about to go through before you even start spending a penny on Facebook ads now the reason it's so important then it to grasp a full understanding of as much as you can before you get started is because you might watch a video on YouTube and as good as the video is then unless it does give you that full grasp and understanding then it isn't going to help you in the long run so Facebook is always changing so you need to adapt and unless you have a good understanding of how things work then essentially you won't be able to make those changes and adjust to make sure that you stay profitable so you might watch one of my videos one particular strategy and apply it and it works really well when you start making loads of money but there's going to come a point where you need to make changes to adjust because your cost per action is starting to increase or maybe CPMs going up or whatever it may be and unless you understand what the numbers mean and essentially what they do then you're going to become stuck so what I'm trying to say is that just make sure you have a better grasp and understand of everything just try and take in as much as possible and make sure you understand what all the different buttons and variations do while you're setting up an ad before you actually go and start spending money so to kick this point off then I'm going to start with what you need to understand when it comes to your store just because when people I probably get like a dozen requests every single day to look at people's stores and there's just so many people making the same mistakes and it's just because they're not taking the time to fully understand the job of their store and what it needs to do and essentially why it needs to do it in that particular way so my biggest tip when it comes to having a good store is to find a store that is already proven to to do good results you can download a extension for chrome it's called similar web and that will tell you how many visits a store is getting and from there you can give you can kind of create like a an estimate of what sort of revenues they're getting each and every month so that will tell you then if a store is performing well and if it is then model your store off that store so look at the layout that they're using look at the fonts that they're using look at the color schemes where they put their images or just the kind of like key fundamentals that go into it and if you replicate off a store that's doing really well then it can be difficult to go wrong so if but and another thing as well is that when you do create your store there's certain things that Shopify will as a default put on your page so there'll be like a taxing tax included or taxing shipping to be calculated check out I don't see that on any other successful Shopify store so if it's on your store then it shouldn't be there so get rid of it so don't just look at the things that you need to put on your store also look at the things that you need to take away so a couple more quick things then to mention before we move on to Facebook ads in relation to your Shopify store that is you need to understand the why I'm going to keep coming back to this word and it's because it's the key word and it's the most important reason so you have to think you have to try and get in a customer's mind you have to think why would somebody buy from my store why am I putting trust badges on my product page why am I doing that don't just do it because somebody tells you in a video understand the why and the why is because you have to make people trust you we are small business owners until we blow up and become like amazon so everybody knows who we are nobody's going to trust me you have to think we live in a day and age now where people are very savvy about what websites they're willing to spend their money with because everybody knows that there's scammers out there so every time they come on to your store if they've never seen you before then they're going to be hesitant to spend money with you because you're essentially not been heard of and you might not have a very big social media following either so the slightest thing can put people can put people off so you have to get into your customers mind you have to be thinking what are they looking for in order to feel safe to spend money with me so do I offer PayPal as a payment option because that is a huge plus you should always have PayPal out on your stores because everybody sees it as a safe way to check out so they can claim their money back if you are one of those people that are scamming why am I putting trust badges on my store it's so people know that they can spend their money safely why am I putting guarantees it's so people know that if there's a problem at all with their order they can just get their money back straight away you're not going to disappear or you're not going to not respond to their emails why am I putting reviews on my store it's because people don't trust me and they want to know that other customers have shopped with me and they've received their products and they're happy with it and it is a quality product so you have to get into the why behind things and this also comes down to color schemes as well I see some weird color schemes sometimes in people's stores which is absolutely fine if it suits the niche but if you're if you're in quite a neutral niche so for example then if you're in a dog niche the dogs uh they're not a very serious subject really they're quite a playful happy go lucky niche if you think about it so having like black and dark colors on your store they don't really go unless you're going for a specific kind of market then otherwise you want to keep it quite neutral colors things that really going to be offensive on people's eyes and google the psychology of colors so there's a reason then why most sales sites are in red is because they're big and bold and they grab attention and they create a sense of urgency then there's a reason why banks and things like that usually have quite pale colors in their logo so Lloyds is green and TSB is a light blue and Nationwide is blue and they're really pale colors because they create a sense of safety and well-being within people there's a psychology behind things so again it comes back to that wine understanding why you use certain colors why are you certain pictures pictures for example then with people's faces in always capture more um they always capture people's attention more than just a product alone because people naturally want to look at each other when you when you're out and about in town or on the street or just walking past people you don't walk most people will always like lock eyes at some point it's just a natural instinctual thing to do so again it's understanding the why you put certain things in certain places so i've just checked and we're already at about 10 minutes for this video so i'm going to try and speed things up a bit um and move on to facebook ads now i did cover everything when it comes to the store but facebook ad wise before you spend a penny with facebook ads that i've spoken to some people before and they've spent hundreds of dollars and they don't even know what the audience insights tool is or they don't know what the pixel is they just know they put a number in in their Shopify dashboard and they're not really sure what it does so spend the time to get to know facebook ads as a platform not just how to create an ad um and why you choose purchase but actually understand all the different features and benefits it can offer you and get to know what the numbers mean as well so you need to know what see and you need to know what the relevant ones are as well and this comes back to the why and understanding essentially what something does so facebook just to kind of give you a couple of things then so facebook is a bidding platform which means the more people that advertising within your space the more expensive it's going to be to advertise in that space the higher your cpm is going to be so you know then if you've got a really high cpm then that tells you the audience that you're currently targeting is really expensive and really competitive so do you have the budget to compete and keep doing what you're doing or if you're not profitable then perhaps look perhaps niche down into a different audience so you can try and find a cheaper audience or go to a different niche completely and understand essentially what cpm means it's cost per 1000 views so if it's really high then you know there's a lot of other people competing for those views so understanding the numbers will help you to understand when to change things up or essentially where things are going wrong the cost per click as well it's how much you're paying for somebody to click on your ad so if you've got one ad set that's getting a two pound cost per click and one that's getting 50 people click then you know that that other ad set that's getting the cheaper click that audience is more interested in your products because more people are clicking on it and you're spending less per click now obviously the be all and end all with facebook is whether an ad set is profitable or not but when if none of your ad sets are profitable then you need to look at them you need to look at these numbers like the cost per click the relevant score as well if you've got a really high relevant score then that tells you that your audience is your ad is resonating with your audience and essentially you're doing a good job now that won't necessarily mean you're going to make money but again all of these numbers you need to take into account as a whole understand them as a whole and it will just allow you to make better judgments when it comes to say killing an ad set or keeping and scaling one and then just to kind of summarize and finish off with facebook ads or like the biggest reason then why I see people fail on facebook is because they don't understand the true essence of what they're trying to do so facebook is a social media platform so it's the place where people go to essentially experience some kind of emotion and if they do then they can be social about it so they can tag a friend they can share a post so if you're if you're trying to advertise a fridge on facebook then unless the fridge does something magical that is worth sharing then nobody's going to tag their friend to look at a boring fridge or nobody's going to share the post so you're going to struggle and unique and that's kind of like also one of the beauties about facebook as well is that when if you can get a post to go viral then essentially you won't have to spend a penny just people tag in and sharing will do the job for you and every time somebody shares the average facebook person has something somewhere between two and three hundred friends so if they share a post that's a significant amount of people that are going to see your ad for free 100 free so the more you can get people to do that then the better the cheaper essentially you will pay per click because you're getting a lot of organic reach so you have to take that into account when you're picking products if you can pick products that's going to spark that emotion and something that when somebody sees it they're going to be like oh actually that's pretty cool um so and so would like that so I'm going to tag them or in fact I've got quite a few friends that'd be interested in this product so I'm just going to share it on my page and that's kind of like the thinking of that you have to get behind so a lot of things that I say to people when I'm talking to them in the one-to-one calls is that try and think is this a social product is it the kind of product then that somebody would tag somebody to show them or share it or whatever it is or just tell them next time they're talking to somebody on a phone so is it a social product so just try and think that when you see product and that's going to make sure that you're on along the right lines so it's kind of summarized then um the number one reason then is that I see people in too much of a rush and they're too willing just to throw money at it hoping to make some money in return and because they don't really understand things truly then they don't really know what to do so they might even actually end up throwing even more money into it and wasting even more money now it's good to be in a hurry but don't be in a rush if you're in a rush you're going to overlook things and the slightest thing that might catch your attention if you're in a rush you might think I'll just forget about it just it's not important right now whereas if you are taking your time a bit more you might stop and think actually what is that and that one point that one thing in the back of your brain that tells you to stop could be the thing that ends up saving you hundreds of pounds so be in a hurry but don't be in a rush so that being said then we're moving on to the second biggest reason then why I see people fail and I'm not going to spend as much time on this one because it's pretty much the opposite to everything I've just spoken about and it's that people take too long to actually get started so I was speaking to somebody the other day on a call and they were saying I've been looking into dropshipping for four months I've been watching videos every single day for four months and I just don't know what niche to go into or I don't know what product to pick and this is just it's kind of like a double-edged sword so you need to find the happy medium but what I'm trying to say then is that don't take too long to get started either because there's a thing called analysis paralysis and if you think about things too many times then it's just going to paralyze you and stop you from actually taking action and the best knowledge and experience you can gain is through actually running ads so once you get a good understanding and you've watched like all of my videos of course and a lot of other videos as well then just get started so what I like to tell people is that have a budget in which you're going to spend on your business so say 200 pounds I'm going to spend a maximum of 200 pounds and if I don't see a return by then I'm just going to stop I'm going to turn all my ads off and then review what I've done and just evaluate what I could have done better where I've gone wrong and just do that every time you spend 200 pounds make sure you do that and then that way it's going to stop you from losing anything more than that now it doesn't have to be 200 obviously it can be whatever suits your budget but it's a good starting point and that's going to force you to review what you're doing constantly it's going to make sure you improve next time round and ultimately it's going to save you a lot of money as well so when I got into dropship and then I reckon I watched videos for probably about three weeks before actually starting my store but I was watching probably five hours a day so I was taking a lot of information a lot of content and at that point that was when I felt comfortable enough to understand how Facebook ads worked I knew what PPE ads were I knew what kind of CPC I had to achieve for I knew what CPM was and because I knew all of those I've used audience insights so I'd installed my pixel I'd learned about pixel maturity I've been on the Facebook business manager help website and I've understood what the best way is to essentially build up data and deliver your ad sets more efficiently so I spent all that time and at that point it was comfortable to me to then go and start my business so you need to do the same thing now I recommend taking at least a week it doesn't matter how even if you're watching like 10 hours a day on YouTube take at least a week because there's a lot of information to cover and this is a brand new thing you need to give it time to sink in and essentially make sense to you before you start committing money to this because the answer is not just to put more money in and I've seen it time and time again people spend hundreds if not thousands and not see anything in return so if you follow me on Instagram you'll know I like to say quite a lot the saying I say is that and the saying goes if you're not earning then make sure you're learning and what I mean by that then is that if you're spending money then make sure you get something back in return for that so if you're spending a hundred pound on Facebook ads then make sure you understand where that hundred pound is being spent and make sure you understand what it means as well once it has been spent so I always a good beginner strategy then is to go really broad really cheaply to begin with because then you can get loads of data from loads of different ad sets and then you've got like a focal point a comparison point so to put it into perspective then if you only run one ad set then it's difficult to see if it's good results or not because you've got nothing to compare it against so if I was to say to you completely forgot his name now Usain Bolt then the fastest man in the world but the only reason we know he's fast at running then is because we've seen him run against the best of the best from around the world so there's a comparison point and it's you've got to kind of apply the same principle to your Facebook ads if you haven't got ad sets to compare it against then how do you know if you're getting good results so that would be my advice then for anybody starting out don't rush into it too quickly don't just watch a couple of videos on YouTube and then within a few days be spending hundreds of pounds on Facebook ads make sure you have a good understanding of those key points I went through but then at the same time don't watch a million videos on how to do product research and still not find a product because at that point the only way you're going to learn if you've found a good product is to simply start advertising start marketing it run those 10 different ad sets and see what the engagements like see what the customer clickers like see if you get any sales and just go from there so don't be too much of in a rush but at the same time don't become paralyzed because you're trying to analyze things too much there's no way you're going to go into Shopify dropshipping and know the answer to every single question there's going to be things that happen that you can't prepare for and they're the things that you can only learn on the job and learn as you go so and ultimately then I guess just to kind of finish the video off it's just enjoy it like I said at the beginning is that it's going to be difficult but you want it to be difficult because when you get to the point where you've got something pretty good going um then there's a pretty damn good feeling so that's been something guys I'm going to wrap the video up because I've probably been talking for about three hours right now um so if you are still watching the video then thank you very much make sure you leave a comment down below let me know if you are still watching it'll be interesting to see how many people do watch the videos this far away through um and very much appreciate is where it really does mean a lot um the channel has been growing phenomenally recently so please do keep it up um and don't forget to leave a comment either so you get entered into the raffle for the one-to-one call and actually that being said then let's announce the winner from the previous video here we are then guys on the previous video 83 likes so massive thank you uh like I said just a minute ago the support has been absolutely awesome so I'm just copying the url then head over to the random um comment picker get youtube comments 52 unique comments I think that's the highest we've had so far click start start the raffle then let's see who's going to be the winner of today's call so the winner is toby beach thank you very much dropping knowledge as always um I am hoping to do daily videos now as well I know I've been a bit slack recently but trust me there's a lot more to come so make sure you subscribe um toby reach out um DM me on instagram facebook whatever it is make sure you get in touch get my attention um and we can get that call arranged and that being said then guys that's it for today's video thank you very much for watching and I'll see you in the next one