In this video you're gonna learn about the 12 proven steps that you can use to manifest abundance and to create success. Create anything that you want. Bend reality. Go from where you are now to where you want to go. Are you feeling stuck? Are you feeling frustrated? Are you feeling that you're not getting anywhere in your life? Well I've been there. I was broke, I was sick, I was depressed and I was not happy and I felt like I was not going anywhere. These are 12 proven steps that I personally use to be able to bend reality. To pay close attention what you're about to learn can transform your life forever. That and more is coming up. So here's the manifesting process. It's a 12-step process and it goes like this. Dreams, inspiration, idea concept, visualization, modeling, blueprint, intention, getting resourceful, action plan, prioritization, optimization, testing phase, evaluation, retest, evaluate and scale. I know that went by quickly. I'm going to go over each one, each 12 step right now. How do you start this manifestation process? First step is have a dream or get inspiration. So what's the difference between a dream and inspiration? You have a dream, it's inside you. It happened inside you. An inspiration probably happened with you observing something externally than being expired by it internally. Dream inspiration can be an extract thing. Unless you had a dream, it didn't make sense but it gave you some inspiration about something. It's very abstract. It's nothing concrete. So that's the first step. We have a dream. We have an inspiration. It can come from inside or it can come from outside that turned inside and it's something abstract. That's where it starts. We hear stories like this in the Bible a lot. We had a dream and an angel came down and he did such and such thing. It's kind of weird but then it turned into something else. It's like a fable.  So the first step is easy. Second step is now you turn that abstract concept into something more concrete. So now it turns into an idea or a concept. Now you have the end in mind. You say, okay, I see what I want to be or what I want to achieve, what I manifest and I see the end. I see the end goal. And now it becomes more concrete and that's also internal inside your mind. That's step two. Are you following? Step three is visualization. It's also internal. So now you take that idea and concept and you make it more detailed. You start to have clarity. So that end goal that you wanted to achieve, you have a clear picture of how it feels or what it looks like, what it smells like, using all your senses to paint a very clear picture about what you want to achieve or what you want to manifest. And using that, you can start to project that idea or that visualization imagination and consciousness into reality. So that's when you can start projecting it into reality using meditation, using our technology to help you do that in your meditation. So once you have that visualization, then next step is modeling. Go to somebody or find someone or something that already exists that's very similar to what you want. Does it exist? Let's say that you want to buy a new house. Did somebody else buy a house like that? So what process was implemented for them to get there? What can you do and what you cannot do? Okay? Let's say somebody got the house but they want the lottery. Can you do that? No. But let's say somebody bought the house but then let's say he got a mortgage and then he got good credit and then he's got maybe a good job or a high income and he got down payment. Can you do that? Yes. Yes. Maybe you can, maybe you can. Okay? But now you assess what is the process that the person got did to get that house. Okay? So modeling, model after somebody or something that already has gone through the process to get what you want or to manifest what you want. Now that you have that, create a blueprint. It could be a map. It could be a plan. It could be a process. It could be an overview or a big picture or the timing that goes with it of what you want. Now you have a blueprint. How are you going to get there? What's the steps? So you turn something internal, which is just an idea, into something external. Now you can see it. Now somebody else can visually or externally verify it and say, okay, I can see your blueprint. I can see your map. Here's the list of steps. Here's the overview. Here's the picture. So it's external now. And now you are able to know what your intention is. So here's my intention. There's a map. I can see it. Then the next step is getting resourceful, asking questions, having really effective questions, like, okay, what do I need? What skills do I need? What resources do I need? Who do I need? Do I need people to help? Do I need other people's expertise? And ask yourself, how are you going to acquire those resources? What prerequisites are needed? Are there things I need to do before I do these things? Do I need to know something? Do I need to learn something? Okay, what are the steps needed to reach the goal? Start from the end and work backwards. And eventually you have whole steps going from where you are now to where you end up. Or you can go both ways and eventually meet in the middle, right? So the key is to build steps. Find out what needs to occur to move forward. What needs to happen now for you to move forward? Those steps that you put on the thing. Is this something you can control or is it something that you can just influence? That's very important because if all of them is based on just how much you can influence, then you don't have direct control. What's better, to have control or to have influence? Control. Right, because it's direct. You have direct control of it. So ask yourself these questions and get resourceful. That's step six. So step seven is create an action plan. Now you know what you need. Now you can list all the actions that you need to take. How are you going to get those resources? Breaking down the steps to reach your goal. Set up milestones. There's a lot of stuff teaching people how to do this. This is the part, but they're missing the other parts, right? But we all know about this. Have backup plans. Have plan B, plan C, plan D. Have preventative measures. Figure out what your timing is. So action plan. Step eight is to prioritize and optimize. What do you do? You have a list. See, a lot of people get overwhelmed. They come to me and say, oh, I'm so overwhelmed. I've got so many things I need to do. And there's so many things I might do to the list. There's so many steps. And I don't think I overwhelm.  And well, okay, did you prioritize or optimize? And they don't know what that means. So here's how you prioritize and optimize. You prioritize by impact, urgency, resource requirements, and cultural over influence. What do you have direct in control of that has high impact? It needs to be done sooner with minimal effort, time, and risk. That's the question you want to ask. Start to prioritize, right? Okay, so what do you want? Do you want something that's, let's say you make a list of things you want to do. What do you do first? High impact or low impact? Something that's going to make a high impact. You want to do first, right? Makes sense? Easy. Urgency. Something that's urgent or something that's not urgent. Which one do you want to do first? Urgent. Because that's why you got it. It's urgent. You got to do it now. You got to do as soon as possible. Low resource requirements. You want to do something that's going to require a lot of resources, like time, money, and effort, or you want to do something that doesn't cost money, that is very easy to do and can do it quickly. Which one do you want to do? The easy one. Easy, quick, and low risk. Okay, so you want to do that first. Control and influence. Like I mentioned, do you want to do something that you have that control, direct control over or do something that you only have influence over? Direct control. Because then the result is more predictable. List and order, reorder and prioritize your action steps according to these criteria. Then you can figure out what is the top two things you're going to do today? Or top two things you're going to do this week? Instead of now you have like a hundred things on your list, now you only have to do is just focus on maybe a couple of things at a time. And those things will be the most impact, the easiest to do, and then make you move a lot faster. Now you're going to do a testing phase. You're going to make a prototype, a proof of concept or a trial run. And just do it. Take a step and just test it out. A lot of times in life we think that it's like do or die. And that we get so stressed out because we think that if we fail then that's the end of it. But it's not. If you fail it's just the beginning. If you fail it's just a step towards success. So you just change the mindset is that everything is a test. I'm just testing it out. I'm just trying it out. Where does that concept come from? Testing? What's that word? It starts with C? Curiosity. So when you keep curious and have that mindset of curiosity and test, now things become not so stressful even if you fail. Because now it becomes more like a game even. Games are fun. Curiosity is fun. But then failure is not fun but now if you turn it into just a test decreases your fear level. If that's what's stopping you from doing things and being active and taking action and doing things then just change your mindset. Think of it as just a test. It's a prototype. That's all you're doing. Next once you have that evaluate the results. Ask yourself how did you feel after doing this? Did you gain energy? Did you lose energy? Did you involve integration? Did you integrate your heart, mind, soul, spirit? If you only involve your mind, did you only involve your spirit? Was it aligned? Was it aligned with your strength? Is it aligned with your purpose? Is it aligned with your passion? Is it aligned with the people around you? Was it ineffective or wasn't affected? Did it work and did it not? Did it get you closer to your goal or not? Did it get you closer to your manifestation? So ask yourself okay what was your intention when you started it? Is that still true after now experiencing this test after this test? Did you find something out that you didn't know before to change your intention? Then ask who's responsible for these results? Is it somebody else or is it you? What worked in what you did? What didn't work? And how might you do things differently now? These are all questions for evaluating and many people lose missed evaluation. They just keep going, going, going, going, failing, failing, failing, failing, failing, going, repeating, failing, failing. So what's they call that? Doing something the same over and over again expecting a different result. That's the definition of insanity. Okay? So because they're not evaluating. Does it make sense? If you evaluate it and ask yourself these questions and then change your approach, then you can actually move forward, not be stuck. So the next one is retest and re-evaluate. So now you evaluate, go back and test again and then re-evaluate again. And what do you do after that? Retest and re-evaluate. Retest and re-evaluate. Keep doing that. Once you perfect the process, what's the next step? You scale. What does it mean to scale? Do you have a formula process with a predictable chance of success? Ask yourself that question. Okay? If it's got a 90% chance of success, that's pretty good. Or even the 80% chance of success. It doesn't have to be perfect, but it has to be good. It has to be predictable. So now that you have that, is it externally verifiable? Can somebody say, yes, this is working. Yes, this is successful. If it's just happening in your mind, then it's not really verifiable. And you duplicate that, then it's screwed. So make sure it's externally verifiable. Maybe it's make sure somebody else can say, look at what you did. Look at your process and say, yes, this is 80% successful or 90% successful or this is good. This works. Okay? If that's true, then can you make it repeatable? Can you do it again? Yeah. If you have a process, of course you can do it again. That's the whole point. And can you duplicate it? Yeah. Can you teach somebody else to do it? Yeah. That means you can. Awesome. So now you have something that you can scale, something that you can multiply and you can repeat over and over again and get the same result or to get a very predictable result at the end. All right? So those are 12 steps of the manifestation process. Okay? And you can use this for basically anything in your life. Hey, do you like what you're watching so far? I've got a lot more content for you that you're going to love. So make sure you go and click these videos here and watch them next. If you haven't subscribed to this video, click the subscribe button here, and if you haven't taken the Chi energy score, click the link in the description below to take the quiz.


The rollout of the Government of St. Lucia's latest income support program 2023 under the safety nets for vulnerable populations affected by the coronavirus project is set to begin. Spareheaded by the Ministry of Equity, Social Justice and Empowerment, the project is financed by the Inter-American Development Bank, the IDB, and administered through the Caribbean Development Bank, the CDB. The main aim of the income support program is to provide much-needed financial assistance to households or persons from the informal sector who continue to experience the lingering challenges of COVID-19 but did not benefit from any cash transfer programs. The income support program underscores Government's commitment to ensure that everyone is accounted for. This kind of support is in keeping with the Ministry's mandate to offer empowerment, support, and also to help build resilience among our service users. The set criteria take into consideration non-NIC contributors who lost their source of income because of COVID-19 or became unemployed or momentarily received no salary because of prolonged illness due to COVID-19 and did not benefit from any previous COVID-19 support programs such as the ERP or ISP in 2020. Also eligible are households applying for a child or ward aged 12 and under whose parent or guardians demise was deemed a COVID-19 related death. As part of criteria 1, applicants must upload a letter of redundancy or any other proof of income loss due to COVID-19. People applying based on prolonged illness must upload a medical certificate or letter from a doctor stating illness due to COVID-19. Individuals applying on behalf of a child or ward must upload the birth certificate of the child or children and a death certificate of the parent or guardian who died due to COVID-19 as well as means of verification of guardianship or parenthood. Eligible applicants will receive a one-time payment of $1,500 per household. The income support program 2023 rollout begins September 19 and will run for six weeks. To apply, visit the Government of St. Lucia's website. The deadline for submissions of completed application forms is November 6, 2023. Applicants can also access the internet services at the ICD centres in Garo, Morsi, Ancelary, Soufre, Viewfort and Miku between the hours of 9am to 4pm. For more information on the program, contact the Ministry of Equity via telephone number 468-5108 or email at pssec.equity at govt.lc.


Well, this evening I want to ask you to turn to Ephesians chapter three with me. We're going to be looking at verses 14 through 21. Well, let's go ahead and pray. Father, we just come with hearts desiring to hear from your word and to hear from you, Lord. Bless us tonight. Allow your Holy Spirit just to have his way in our lives, Lord, and help us to be obedient to what we hear. We love you and praise you in your name. Amen. Well, by brief way of background, the city of Ephesus is located in the southern part of modern-day Turkey. And in Paul's day was a capital of Asia because it sits near the ocean and it became a very vital port for the Roman Empire and commerce. And it's the site of what's called the Temple of Diana, one of the seven wonders of the world. And if you go there today, you can still see the remains of a beautiful ancient library and a stadium that back then sat 25,000 people with incredible acoustics because if you can imagine they didn't have speakers or Bluetooth or anything like that. And there's a road and pillars on both sides of the road that lead all the way down to the port and the ocean and they're made all of marble. I mean, it's just incredible to think of what that city must have looked like back in Paul's days. And there's a lot of statutes on the roads, including the Greek goddess of Nike, the goddess of victory, if you wonder where that came from. But it also became the center for Paul's missionary work in that region. During his first missionary journey, Paul visited there briefly and then later on his third missionary journey spent three years teaching the Gospel and many people were getting saved and many lives were being transformed. And the epistle was written in about 60 AD when Paul was in a Roman prison chained up, proving that nothing would stop him from sharing the Gospel. It was during that time that in addition to writing to the Ephesians, he also wrote Philippians, Colossians and Philemon together known as Paul's prison epistles. If you ever hear that phrase. But let me share a couple of things from the preceding chapter that lead up to verses 14 through 20, which will be the focus of our study. And in chapter two verse 14, Paul writes, for he himself is our peace who has made us both one and has broken down the middle wall of separation. Having abolished in his flesh the enmity, the opposition, the hostility that is the law of commandments contained in the ordinances, the many ordinances that the Jewish religious folks had come up with expanding on what God had written. It says so as to create in himself one new man from the two, thus making peace. And in chapter three verse six, Paul shares what he calls a mystery, something that was revealed to him that hadn't been revealed previously. And that was that believing Jews and Gentiles were to be joined together into one body of Christ, one church, no longer separated before God and they would have equal access and standing in the church. And it's important to remember that while the Old Testament references the fact that the God, the grace of God would come to the Gentiles. It was still a very radical concept to the Jews because they saw themselves as God's chosen people and there were a lot of separations. When you go there today and you go to what's called the whaling wall, the wall of the temple, the men are on the left hand side, the women are on the right hand side. Back then, if there was a sign in what they called the Gentiles courtyard that said, if you enter the Jewish courtyard, you'll be killed. That's a sentence of death. And so they couldn't eat together. There were so many areas of division that that caused them to be divided. But now Christ through his death and his sacrifice on the cross is breaking down those walls of separation because he was reconciling the Jews and the Gentiles both to himself through faith in Christ and the church was now to be a unified body in Christ. No longer having those divisions between them. In chapter 2 verse 19, Paul wrote at salvation, our new identity is that we become the dwelling place of God. We become the dwelling place of God at that moment of salvation that God deposits his Holy Spirit in us as believers. And so with that in mind, this mystery in that he's revealing something that's just radical to all the people during that time, he gets to verse 14 and he humbly prays, for this reason, I bow my knees to the Father of our Lord Jesus Christ from whom the whole family in heaven and earth is named. You see, Paul knew that God's purpose in revealing this through this mystery was to unite his church, to bring peace, to bring unity in his church and knowing this because he knew it was God's will. God is revealing this. It's God's will. Then he can pray confidently the things that you're going to read in verses 14 through 20. In 1st John 514, Paul tells us John tells us that if we ask anything according to his will, he hears us according to his will. And that's the key to effective prayers to know God's will because then you know that you will be praying consistent with what he desires, what his will is and not just something that we want or we're asking for. But people often ask, how can I know God's will? And how can I know God's will for me? What does he want in my life? And in Romans 12 1 through 2, Paul writes for I beseech you, their brethren, I beg you by the mercies of God that you present your bodies as a living sacrifice, wholly acceptable to God which is your reasonable service and do not be conformed to this world, but be transformed by the renewing of your mind that you may prove that which is good and acceptable and perfect will of God. That's how you know you use your bodies to serve and obey God.  And oftentimes we don't do that for whatever reason, right? We know what God's word is. But we're going to be even voluntarily rebellious in some cases and God's not going to bless that. He wants us to be obedient. I took my kids to the courthouse one day and we were upstairs looking at all the people if you're familiar with the Rancho courthouse. Hopefully you're not. Yeah, I see people shaking their head. But there was a ton of people coming in and out. You know, they had cases, tickets. They were in court and all the personnel, the clerks, the bailiffs, the sheriffs and all of that. And I looked at my kids and I said, imagine how many of these people wouldn't be here if they just walked in God's ways. You know, don't steal. Don't murder. Love your family. Love your wife. Not your neighbor's wife. Love your own wife. And we could keep going, right? Imagine how much of the staff, how many of the people that are in and out wouldn't be there. But Paul continues and he writes, I bow my knees to the father of our Lord Jesus Christ from whom the whole family in heaven and earth is named. Now, he's not saying that every human being is part of his family. I remember our neighbor when my daughter was really young said, you know, we're all God's children, right? Almost like a hippie. She said, like, we're all God's children. But John one 12 says as many as received him to them, he gave the right to become children of God to those who believe in his name. And in Acts 1126, it tells us that the disciples were first called Christians in the city of Antioch. So what Paul is saying here is that all of God's family, believers, regardless of race, of gender, of nationality, whether you live in Southern California, Africa, South America, Iceland, all believers in him are called after his name. Christ followers or Christians. So in verses 16 and 17, Paul's prayer continues as this. He says that he would grant you according to the riches of his glory to be strengthened with might through his spirit in the inner man. Paul wanted the Ephesians, Ephesian believers strengthened not by their power in might, but by God's might by God's power according to his riches. And it's a strength that comes through the Holy Spirit working in your inner man. And just as we have physical bodies, we also have an inner man. Second Corinthians 5 1 tells us and Paul writing refers to our earthly bodies. This house as a tent. It's just a tent. It's a covering. It's a shell. And at funerals, I've pointed to the casket and I've said he's not here. He's not here. This is his tent.  And God wants to strengthen you from the inner man. We know that it's important to take care of our physical bodies, especially as you start to get to my age, you kind of appreciate it if you have some kind of modicum of health, right? But it must not be at the expense of neglecting your inner man. And let me repeat that, that we know how important it is to take care of our physical bodies, but it must not be at the neglect of your inner man. First Timothy 4 8 says for bodily exercise, profits a little, right?  Oh my. It profits a little. Don't laugh, Mike. But he goes on to say, but Godliness is profitable for all things, for all things. All the answers that we need for life and everything that comes at us through life are here in that word, that that love letter that you're holding in your hands. The answers are there. You just have to dig into it. And imagine, you know, I come down pipeline and there's a couple of gyms on the way in Sunday mornings. Parking lots are full. And I tell my kids, a lot of people went to church today. That's their church. And I get it. They're not saved or maybe they are, but they're taking the time, you know, to get up when it's still dark and go to the gym and get the physical outer body going. But imagine if we have that same commitment, that same dedication to knowing and understanding God's word and allowing it to strengthen our inner man because that's what God wants to do. And that some dedicate that amount of time to their outer man. And again, first Timothy says, it profits a little a little compared to the inner man, right? And being spiritually equipped. In verse 17, he writes, that Christ may dwell in your hearts through faith. That Christ may dwell in your hearts through faith. In John chapter 14 verse 23, Jesus said, if anyone loves me, he'll keep my word and my father will love him and we will come to him and make our home with him.   Some earlier than others, but they leave. But here Paul is using a word that means to make a place. His permanent home. He's not visiting. When you invite Jesus into your life, he wants to come in. He's going to move in and not just visit and he wants to make your home, your life, his permanent home. And sometimes what we do is we invite him in and we show him into the living room. But we want him to stay there. Like, I'm okay that you're here in my living room, but don't go into my closet because I'm terrified at what you might find. Or I shut the TV off because I don't want you to see what I was watching or magazines that I have or whatever's going on, right? The computers and all of that because we have things that we're holding onto and we think that these are kind of like our little secret sins. But God knows. God knows. And he wants to be able to come into your life, into your home and go into any room that's there.  It's his now.  But you can only do that through faith, which means that you need to trust him to work things out and clean things up, including any sin or sins that you might be struggling with and holding on and kind of trying to keep from him. And sometimes I've had people say, well, you know, I want to get my act together first. And I think that's just an excuse, right? To put off having faith in Christ. It's just an excuse because there's a saying that says a fisherman first catches the fish and then he cleans them up. It's not the other way around. And so in verse 17, he goes on to say being rooted and grounded in love. God wants us to be like him. He's shaping us and molding us into his image. But it's only when you yield your life to him and the power of the Holy Spirit that he can settle down and begin to show his love through you and in you. He says being rooted and grounded, rooted and grounded. I don't know if you've ever dealt with roots, but I had one time when I had a leak in my sprinklers and I started digging and digging and digging. And I found the leak, but there was a root that had grown and almost like if you can imagine a weld. It was like welded around the pipe where it was looking for that water that was leaking out of the PVC pipe. And after I had been digging and kind of working on this for about 15 minutes, you know, my my lovely wife comes out and says, are you almost done? And I'm sweating and I'm digging and I'm going deeper and I'm seeing more and more roots wrapped around this pipe and 10 minutes later and I'm thinking, I think the phone's ringing. Somebody's trying to get a hold of you like go back inside and you know, and it took me literally I think two days and I wound up having to cut the roots with a chainsaw that I borrowed from my neighbor. I dug this huge hole, got in there with a chainsaw and had to cut out these roots. Our love for one another has to be like those strong roots. First Peter 122 says love one another fervently. That means enthusiastically and passionately with a pure heart. Love each other fervently. And John 1334 says love one another as I have loved you. He gave us the example, right? Like how am I love? How am I supposed to love? Follow the example that he gave us. Romans 5 8 says, God demonstrates his love for us that while we were still sinners, Christ died for us. How much does he love you? Sacrificially and unconditionally. Then he says being grounded in love like a building that has a strong foundation that's not going to crack. It's not going to fail. Our love must be grounded in him because when we allow Christ to freely dwell in our hearts and dwell in our lives, then then you can be settled in him as your strong foundation. But without him, it's impossible. So in verse 19, he says that we may be able to comprehend with all the saints. You see, Paul really wanted the church to understand the extent of God's love for them, the extent of God's forgiveness for them because when we don't or when we can't, we struggle with those things. We struggle with loving people. We struggle, you know, with maybe it's a homeless person and you stop at the end of a freeway off ramp and they're dirty and smelly and you know, instead of saying that's God's creation. He was made in the image of Christ and we have to love. We have to love. But Paul tries to describe it this way. What is the width and length and depth and height? God's love has various dimensions to it because it's real. It has width. If you can tell how wide a river is by how much area it covers, how wide is God's love for you if it covers all of your sins, past, present, future. It has length. When did God begin to love you and how long will it last? Jeremiah 31 3 says, I have loved you with an everlasting love. It has depth. Philippians 2 8 says, I'm being found in appearance as a man. He humbled himself and became obedient to the point of death, even the death of the cross. Can't get any deeper than that. And it has height. Ephesians 2 4 6 says, but God who is rich in mercy because of his great love with which he loved us, even when we were dead in trespasses made us alive together with Christ by grace you have been saved and raised us up together and made us sit together in the heavenly places in Christ Jesus. Try to comprehend the love of God that includes every person that's ever existed on this planet. Again, past, present, future. Or if you listen to AOC for the next 12 years because then the world's going to end, right? But his love is a love that lasts for eternity. A love that reaches even the worst of sinners. And I don't care. He doesn't care what you've done. Yet he loves us. He forgives us, wants to draw us to himself. And he's a God of love. The extent of his love that can even take someone like that to heaven. You see, God's love for you is so vast and so complete. It's not lacking in anything. That it was otherwise possible for Paul to describe love, God's love. But he did the best he humanly could. In verse 19, he says to know the love of Christ which passes knowledge that you may be filled with all the fullness of God. You see, some say that religion is a matter of belief like a blind faith, not knowledge. But Paul tells us that we can know the love of Christ. We can indeed experience the love of Christ. The world doesn't understand it because it doesn't understand Christ or his love. To the world, love is based on attraction. And that's why sometimes a worldly love only lasts as long as the attraction lasts. I was telling the men Tuesday morning at the study that I see God's love every Tuesday morning at the study to know that men are getting up when it's still dark. It's dark four or five in the morning and coming and making food in the kitchen to know that men are coming and setting up tables and chairs and then when we're done breaking them down just to see them have a time of fellowship to be in the word to pray for one another when I see the guy standing and kind of arm in arm and praying for each other. That's a demonstration of God's love because I wonder how many of these guys would be here and doing this if God's love was not in them. I don't know. Maybe a lot of them wouldn't be. Maybe some would. But I see God's love working in them and through them. And it's a godly love that loves for what it can give and not what it can take or get. God's love is real and we have those opportunities to see it at work. In verse 20 he writes now to him who is able to do exceedingly abundantly above all that we could ask or think according to the power that works in us you see because there's really no human word in any language that could adequately describe the love of God and because in reality it's just beyond our being able to describe it or to understand it. Paul tries his best by putting two words together. You know it doesn't otherwise make sense to say God's love you know it's exceedingly abundantly that he can do in your life. Who can do all the incredible things that Paul has been writing about? Only God. Only God can take a person who may be living an empty and hopeless life and save him and transform him into a new creation. Only God can take a broken marriage and restore it. Only God can take hurting hearts and heal them overcome addictions and bring love where there was none. You can ask and you can think to your blue in the face but God can do exceedingly abundantly more. How does he do it? Paul explains that it's according to the power that works in us. It's through the power of the Holy Spirit who dwells in every believer in Jesus Christ and he concludes with verse 21. He says to him be the glory in the church by Christ Jesus to all generations forever and ever. Amen.  If God has done something in your life and I'm sure he has praise him worship him serve him yield your life so completely to him that you say come in take over you're the master so that he can work through the power of the Holy Spirit to accomplish the plans that he has for you. We know that right? God has plans for each one of us because the God we serve is an awesome God and maybe you're here tonight and for whatever reason you've never invited Jesus Christ into your heart to come and make your life your heart is permanent home or maybe it's busyness and distractions in your life that you have as you think about it neglected the inner man and you're holding things back from him but you know that it's time to give him complete control and if we do our will it never really works out very well. I want to give you an opportunity to get right with him tonight. If any of that describes you you're not here by chance. God has drawn you. God loves you so much. He wants to draw you to yourself. So I would ask if if that's you if everybody would just bow their heads and close their eyes but if you're here tonight and you have any of those kind of situations that you know what I'm done. I'm tired. I feel hopeless. I don't know what the purpose in my life is but I know that what I need to do is give my life to him so that through his Holy Spirit he can work. He can have power and exercise power and his love through me. I want to pray. So if if that's you raise your hand so I can pray with you. I see you up front. I see you in back. I see you in the back as well. I see you in the back. God bless you. Let's pray.


Okay, so today, title of my slide or title of my session is Managing Complex Projects with Design Components. I'm John Albin, John Albin Wilkins, better known as John Albin, basically everywhere, jubil.org, Twitter, that sort of places. I'm a senior front-end developer for Previous Next, and I'm really excited about giving this talk. I've actually been iterating on this talk for more than a year. The very sort of the prototype version of this talk was given at SASConf last year, and I've given it three or four or five times now, something like that, and it keeps getting better and better, and if you saw the video in Austin, it's way better than that. I have been doing drupal for 10 years now. My 10-year anniversary was like last month, and more importantly, though, I've been doing front-end development for the past 21 years. And because I've been around so long, I've done a lot of stuff, but it's just because I've been around for so long. ZenGrid, Normalize, Syncs, all this stuff. I'll post these slides, you'll be able to get the URLs later. But I'm one of the reasons why I'm so excited to talk about this topic today is because of what I've learned just in the past month.  This session will mention the word agile. I'm not knocking trigger alerts here. This was my trigger word for a while. People kept talking about agile and not explaining it very well, and then they're like, oh, you'll figure it out as you do it, and I kept doing it. The agile or agile-like process and doing it does not make it any more clear. I got way more confused when I was actually doing it than before, because, yeah, just bad. But I have... My goal for today is basically to explain agile in a way that I would have understood it two years ago. That's my goal for today. How many people here went to David and Brian's state of the front-end session yesterday? A fair few of you. So their question was basically, look at all these different technologies, what's going on, can we know all this stuff? And I saw the first version of their session at DrupalCon Austin, and I've been thinking about this question in front-end development very strongly for the past several months now, where are we headed? And there's a great quote here by Nicholas Gallagher that says, are you new to front-end development? Here's the secret. No one else really knows what they're doing either. And I was totally true. It's very overwhelming, especially when you're new, but even when you've been around for a long time. This quote is from January of 2013, so it's been a little bit...  I'm sure that he's figured out basically what he's doing. And so rephrasing the question, what the hell is going on, the problem that most people, including myself, have been having is we have all these new technologies. So many new technologies. This is a technology conference, so we're talking about technologies all the time. But of course, process is another very important part of the picture. And one of the interesting things about responsive design was that it was a process, a way of building websites that came with associated technologies. And that process, together with the technologies, made much more sense of media queries and scalable images. All of those things made more and more sense to brought them into the process of responsive design. So when I gave this talk previously, I talked about web components. Because again, I was thinking about technology. Web components are a new HTML spec that you can do some of this using JavaScript right now, some JavaScript polyfills right now. But this is future technology that we can't quite use on real websites yet. And that's just... I was too focused on that one thing in Austin to really get the bigger picture. And there's all these other things going on, right? There's Twig, Jenkins, CSS, CSS, Linting, Yeoman, Bauer, just crazy, crazy, crazy. And this is only like 5% of the stuff, right? There's so much more. There's like 20 times more of different technologies, right? This is bad. Let me skip to the next slide. Okay. But what I've started to notice is a lot of those technologies have to do with component libraries and continuous integration.  So you're trying to be able to, you know, bold your site using automation and also do regression testing so that basically when you add new things to it, you can ensure that you're not making your site explode in some other area that you're not focused on at that point. And continuous integration is basically... the reason why people talk about it is because agile development requires continuous integration. If you are supposedly doing agile development and you're not doing continuous integration, you're doing it wrong basically. I mean, it's impossible to actually do agile without continuous integration. As much as you try, you will fail until you start doing continuous integration. And then sort of some of the other key technologies that I've seen, they're talking about component libraries, right? And a great way to document a component library is with style guides, right? So... these are the two topics that I'm going to be talking about, mostly, the rest of the session. And I want to explain agile development so that we can all sort of understand it because I never figured out what was going on. And, of course, I need to actually show you, of course, what's wrong with waterfall development, right? So this is a typical waterfall plan here. You plan it first, and then you do the design phase, then you do some development, and then you do the thinning, right? This is the way that you plan it from start to deadline.  So the way that you solve your problem is that you basically, you stop, you don't do half the thinning, right? You throw that away. And oftentimes that means that you're also throwing away development time because you're not theming those features, you're throwing away all these designs, and you're throwing away all these planning. Now, if you look at the actual time where you've done useful work, it's about half of the actual start to deadline time is usable, and the rest of it you've thrown away. This is horrible. I mean, basically, you could have done the same thing in half the time, in half the budget, right? But because waterfall does all this upfront planning, it's just really bad. So Agile Development looks at that, and it's, what is the core concept? What is it trying to do to make things better? And the other one thing here is reducing your risk, right? In the waterfall, we had the risk of like, well, what if we don't finish everything that we planned? Right? You have a huge risk because you end up with a lot of wasted time if you don't get to the end of the plan. And so Agile Development, reducing your risk by controlling and minimizing the risk at every stage of the process. So let's look at a natural project. Again, you have start deadline. This is the same timeframe as before, but now you've broken up your project from start to finish in two weeks' sprints.  Make sure that this list is in the priority order of what you feel is the most important stuff because we're going to start at the top and grab the first couple of features and implement it during the first sprint, okay? And then when the second sprint comes along, what do you think happens? If we just sort of start going and keep going, and then finally at the end, we're like, hey, here, client, what are you, we're done, right? No. Actually, when we get to the second sprint, we have to talk to the client again and say, okay, maybe something's changed. Actually, almost guaranteed that something has changed in their priorities because they've now seen the results of your first sprint. So you want them to look at the priority list again, reprioritize it again. Make sure they understand the stuff that they're de-prioritizing and understand the stuff they get that they're prioritizing. And just grab the next set of features, do it in the next sprint, and do that continuously over and over again, and when you get to the end there, the client is well aware of the stuff that you haven't finished because they specifically de-prioritized it, and by definition, the stuff that you've finished by the deadline is the most important stuff that the client wanted. Every two weeks, prioritize private goals, complete a set of features, and you're creating a releaseable product. And so what does that mean for the web? How do we actually do, like, people have a really hard time understanding, like, okay, when I get to that first sprint, what do I have after two weeks on a website, realistic, what does that mean? I did some scrum training recently, and the best advice that my trainer gave me is basically, it's going to take you over three years of doing this before you figure out sort of the mechanics of how to do it the best way. And the answer is I don't quite... I'm having some vague ideas of what that first feature is going to look like. That first set, I should say, what that first deliverable at the end of the sprint looks like. It's going to be really minimal, right? A single one-page website is deliverable. It's complete. All of its features have been designed. That's what sort of the minimal viable product looked like at the end of that first sprint, and it's going to be hard for us to figure that out. But the mechanics of Agile and the web basically mean that we can do this... Oh, actually, I should take... So, Kim Pepper, my boss, he asked me, how do we get designers and front-end developers integrated into our Agile workflow? He asked me that right when I started working there in May, and I said... I don't know. I have really no idea. But then he sent me to a scrum training last month, and it just blew my mind, and it was two days' intensive course, and I came out of there and I said, okay, I know exactly what we need to do. And it's not even that hard. That's why it was so hard to figure out, was because it's really, really simple. All we need is component-based design and automated style guides. And if I had known this when I submitted this session, I would have called this session style guide-driven development. The known web development. I honestly believe that... I know probably a lot of your bosses are like, well, we're going to try to do Agile. You will all be doing Agile ten years from now. Guarantee it. I feel like style guide-driven development, that's the way we're going to be implementing websites. It's not just a front-end developer thing. This is how web development is going to work. So style guide-driven development, the only requirements are component-based design, automated style guides.  So we'll go through both of those topics, and let's get started with the component-based design. What are we doing now that we're doing wrong? So CSS specificity wars. This is something that we're definitely doing wrong. Yeah, I have to get the cat vid a gif in there. Oops, I missed one slide that wasn't converted from Austin's theme.  And then you've styled your nav bar. And then you're like, oh, the sidebar has a different styling. Oh, it's got all the same classes. I'll add a new rule set that's sidebar menu, and this is your side navigation as you drill down. And then for whatever reason, the client says, oh, I need it on this one page. I need to have this style look different. So you just start getting these crazy and crazy more higher and higher specificity on all these rule sets. And when I first started using SAS, it was like, oh, I can fix this problem. I'll just rewrite it in SAS. Whoo! Of course, the problem here is that all I've done is I'm now auto-generating the same crappy CSS I had before. I love SAS, but it doesn't fix this problem. Another problem we have is overly generic class names. This is especially true in Drupal. You have title. There's also titles inside blocks, inside nodes, inside views. Basically, this means that you can't actually style anything with just the title because it bleeds across all these other different things that have completely different styles. And I'm pretty sure that this is in D7 because of me. Sorry about that. Content, same thing, black node views. This one wasn't me, thank God. This is bad, but learn from your mistakes and move on. It seemed like a good idea at the time. So given the mistakes that we're doing now, how do we fix that? And that's what design components. So when I say design components, basically what I'm talking about is the object in object-oriented CSS. The module in SMACS, which is scalable, modular, whatever it stands for. Black in bounds, black element modifier, UI pattern. These are all the same concepts. Bootstrap and foundation, those are also component libraries. This is the same idea, it's just a library of components. And even the upcoming web component spec, that's components built using HTML markup. I think that President Seh was giving a presentation where he was talking about some new CSS and HTML stuff he should probably talk about web components there as well. It's the next session after this, yeah. Go see that, he'll go over the more specifics of web components. So these are all the same concepts. And basically our goals of CSS components is we're applying to a loose set of HTML elements. They're repeatable, so if you apply a design component to a particular set of HTML elements and apply it to a different one, you'll get the exact same design. They're specific, meaning that the same name isn't going to bleed over to other designs. It's just going to be that one design using that one class. They're self-contained, the styles don't bleed over the thing. And nestable, so you can have one component sort of nested inside another one. I'll go over this list again because I want to give you a bit more concrete examples. Here's the PRI website. This is one of the first websites that I helped build using this idea of design components. And I took this sort of lead article here and made a single design component out of it. It had an image to the left, certain styling for the title, the taxonomy date, additional taxonomy in the top left there, and that also that red share count there. So that was one of the first ones that I implemented. I tried to make that repeatable, and then I went on to the next feature and found something else to identify as a single design that can be repeated. And sort of scroll down here, and then down here at the very bottom, you can see here's another list of news articles very similar, but the order of the stuff is different. The share count is on the left instead of the right. So what I ended up doing is I made the share count, I refactored, made the share count its own design component and then sort of nested it inside them. So as I looked at the designs, I would discover the reusability as I went. Now, there's a lot of different things going on here inside this design, right? Just inside that one component. How do you actually, like, identify all those parts? How do you write it? How do you organize that component? And the way that I start out is by looking at SMACs. SMACs is a way of categorizing CSS. We have base, layout, modules, date, theme. It's like Jonathan Snook's hates Drupal developers. He has to use the exact same terminology that Drupal does. So I usually, actually instead of that, I will use base, layout, components, date, and skin. So I've replaced module with components and theme with skin. This makes it much easier to talk to other Drupal developers. So the rest of the slides, I won't be using the official SMAC names, but these other ones here. So when I started looking at this and started figuring out how am I going to use this categorization to build design components, I realized that state and skin, they're not actually equal levels of components, layouts, and base. The state and skin are actually parts of the component. If you're building a component, state and skin are pieces of them. And in fact, there was something missing, too, which was BEM. The additional things that you need to understand a component is the base component, different elements, with modifiers, states, and skins. I can go back to the PRI example and start to point at things like, this is an element, and this is a skin, and this is a state. It would be very difficult to understand, so instead I'm going to use an analogy. And one of my favorite quotes about explaining technology through analogy is this one. You see, radio is a kind of very, very long cat.   You send signals, they receive them there. The only difference is there is no cat. I have a ride sign. Another claim to my analogy is as awesome as this one is simple, but we're going to talk about design components using the analogy of a flower. A very poorly drawn flower, because I've done it myself, but this is going to be the visual analogy for understanding the parts of a design component. So this is our base class, CSS class, just dot flower. This is going to go on one of the HTML elements. And then when we start looking at elements, we're basically talking about different pieces of that design component. In this case, flower petals, and we're using BEM syntax here for building our classes. The important thing is to understand that petals is an element of the flower component, and you do that by having very specific naming. So instead of having high CSS specificity, we're converting that CSS specificity into very specific naming conventions. So it's low CSS specificity, but a very specific name so that it doesn't bleed across to other things. In addition to the petals one, we also have the face, we have the stem, and we have the leaves. And just so you understand that when I said this is a loose collection of HTML elements, I really meant that because you can also have a flower bed, right? And obviously the flower bed is a wrapper around the flower itself, so it's going to be a wrapping HTML element. So it's totally fine to have an element of your component be outside the DOM of the base component. That's totally fine. Let's go on to modifier here. So we can have a modifier called tulip, and this converts our normal flower into a tulip-looking one just by using a slightly different CSS class. So flower dash dash tulip. The double dash here designates that you're using a modifier to make a variant of our normal design component. And now, just given this naming convention, I see a lot of people take that and sort of start running with it, and you really don't want to make this complicated. I was actually shown this example today. Channel dash tab underscore underscore guide underscore underscore upcoming dash video underscore underscore info underscore underscore time. So there's actually only two problems with this. You shouldn't be inferring HTML structure with your class names. It's really no need, right? Because it also makes it impossible to refactor and simplify. You totally need to simplify your HTML if I'm guessing correctly here. You simplify the HTML. You don't have to rename your class names just because you've simplified the HTML. So this is just completely unnecessary. Component, and you have an element. Just make your element sort of descriptor longer rather than start nesting it crazy like this. And the second problem with this is semantics. Semantic namings. Content semantics, they're handled by HTML5. So whether you have an article, your menu, that's already handled by HTML5 elements. There's no need to try and describe your content using CSS classes. Drupal uses basically build semantics for all of its CSS class names. It's like, oh, the views module makes this, so I'll name all my classes views. So it uses build semantics. That's not the best, but that's what we have right now. But there's really no need. Let's make our class names based on design semantics. You're trying to describe the design in a way that you understand it's meaningful to developers and designers so that they understand what that class name means and what design is trying to describe so that it can be repeatable. But don't make it too specific like green box, and then later you need to rename. You need to refactor it and make it purple. But just try and come up with a relatively good name that's based on design semantics.  Don't worry about it. It's really not that important. Name it something that seems to make sense to spend a little more than 30 seconds thinking about this name. Really, just do it. There's no need to get crazy. If you come back the next day and you're like, oh, God, why did I name it that? Just refactor it. Or admit your shame to the rest of the team and move on. It's all right. So getting back to our design component, if you're going to state, this is a hover state, right? So in this case, your mouse is hovering over it. The state is actually, there's a couple of different ways that you can have state. This is a mouse state. You can also have a JavaScript state. So like some JavaScript sort of applies this extra is-pollinating class to your component. And of course, in media queries, there are also a state of your design component. So this is the desktop version of our flower. You can see it's just wrapped in a media query, right? And then of course, print styles. Print styles are also you know, they're just media queries, right? So here's our print style. And then if you move on to skin, skin is kind of a weird one. And for a long time, I didn't have a good example of what this actually was because it basically skins got started with like Yahoo in the 90s. I don't know if you remember this. You would go to the Yahoo website and then it would be like all yellow and stuff. And then you would go to like Yahoo Finance and it would be the exact same layout in all the same boxes, but now they're being green. It was a, what skin is basically it's a global it's a global modifier, right? So it's, you're modifying this design component, but you're sort of applying one class at like maybe the body tag and it just affects all of your design components across the board on your entire site, right? So skin is basically a special case modifier that's applied globally. And in our example we're going to have an is night flower here. This is what it looks like when it's night. Yeah, global modifier. And that's basically it.  You can learn this stuff and memorize it and just use those rules as you're building your design components identifying the repeatable bits. Use these rules to do your naming conventions. Here's an, you know, all the selectors here again, so the dash component we use a single dash if we need to have multiple words to describe our components because sometimes you just can't come up with a single word. Double dash specifies that it is a, you know, a modifier you're very making a variation of the design. So you're like tweaking it just a little bit so that when you apply that class you're getting the slightly altered one. All of your elements are with double underscores. Sometimes a variant will have a slightly different styling on that same element. And then all of your different states javascript state, hover states, midi queries and then lastly the global modifier as a skin. Now I'm fine if you hate double underscores and double dashes and dashes and stuff like that and use some other way to identify which bits of the component and which bits of the modifier. That's totally cool. But these same ideas apply even if you use completely different syntaxy bits in between them. So let's go over this list again one more time. So CSS design components. They're applied to a loose collection of HTML elements. Again, we're not trying to infer any specific HTML DOM structure. They're completely repeatable. They're very specific self-contained and nestable. And this naming structure has been adopted by Drupal 8. Drupal 8's official class naming convention is dang it, not that real is described here. Drupal.org.node 1886770 and it follows these exact same naming conventions. So when I start actually building a website using design components my file organization is basically the first three levels of smacks. So we'll have a base folder, a low out folder, components folder and then everything just sort of goes into one of those three folders here. And the SAS setup, because I love SAS is basically this. So my styles.scss file is going to import the init partial and the initialization partial is basically loading any third party libraries that I need. It's in charge of loading the variables as well and that's where I store all of my SAS variables. And that way if I have multiple.scss files that I need to generate like a wissywig.scss file it could also import the init and get the exact same access to the same variables and the same SAS libraries. And then yeah. So here's my styles.scss So we import the init import the base, import all the layouts and then all the components. And this it's set up with a really simple folder structure but it also means that because every single one of my design components are in a separate file you end up with a ridiculously long list of files inside your components folder. But it turns out that this is really easy. It freaks people out when they see it for the first time like 50 files how am I going to find anything but it turns out it's really easy to find your design components. If you're a new person on the project all they have to do is inspect the actual thing that they're trying to alter, inspect the DOM look there's a class right there on that component and look there's a file name with the exact same name of the CSS class right so it turns out to be really easy to organize this really easy to find things for new people so I highly recommend not trying to build some folders inside your components because it actually makes it harder to find things. Now, I know a bunch of you were like wait a second so you mean I need to alter my HTML to add in all of these new CSS class names. You do realize that we're all using Drupal right? Sometimes it's going to be completely crazy you cannot like alter some you're trying to get down into some template you don't even know what it's named and you just cannot figure out how to alter that bit of markup and you know I've been doing Drupal for 10 years and I can't find all this stuff but the good news is that with SAS we're everywhere around that with the fugly selector hack the fugly selector hack I didn't actually name it after Morton but I like to show Morton's face when I talk about it. What I do is I will in my SAS I will write a selector that's based on the DOM that I was not able to change because Drupal sucks Drupal sucks I couldn't change this DOM and then inside there I will extend into the class name I wish I could have used in the DOM so you know inside the SAS file I will define the component as I wish I could have using this silent selector here feature underscore title-link I wanted to put that as the class name but I couldn't get into the DOM A-link because Drupal so I'll write it this way and it turns out this it does make your actual CSS selector have more specificity but it turns out it's never actually a problem I've never encountered a problem from doing it this way because you're still thinking about your design components in this repeatable way and also completely independent way each of your design components are independent so you end up without any bleeding anyway so the selector in the DOM it doesn't turn out to be that big of a problem usually I obviously don't use dot views space A that would be bad but uses a little bit more specific than that but this is a great way to actually get Drupal to spit out all of our components in CSS that's basically it as far as design components go so let's start looking at automated style guides I looked at a bunch of different automated style guides and the first one that I actually got to work was KSS node so this is one that I prefer it had a couple of bugs but because I really liked it I actually became a maintainer of this as of July so now if there are bugs in this you can yell at me and everybody knows me, hi say hi John now you officially know me you can yell at me about this and this is where the slide I didn't finish so let's jump over to the last slide which is time to grapple right it's in front of me here if I can just figure out how to hide the stencils there we go so this is our basic workflow of any automated style guide system so down here we have our application, in this case Drupal we have our SAS files HTML templates twig, whatever mustache, doesn't matter and what we would like to do is we have SAS we're parsing the SCSS files and generating CSS files and we would also like our application to take our real templates and dump each design component into a separate file just like a code snippet of HTML that our design component is going to apply to and then we're going to have KSS in this case our automated style guide generator suck in the source code of our SAS in this case and these HTML snippets so it's using the real the real code and the real markup and it's important that the style guide generator use the real code when it's building the style guide because that's the only way you can ensure that this style guide will stay up to date I've been using style guides for like 10 years and for 9 years and for 10 months they've completely sucked because what happens in reality of course is that it's a waterfall thing so while the designer does all the work he does a beautiful style guide but of course there was last minute changes in like last two weeks of his part of the process and then he had to change a whole bunch of stuff and he forgot to or he didn't have a chance he didn't have time to update the style guide so I get a brand new style guide it is already out of date and then I start implementing stuff and it fails immediately so style guides become more and more useful if you're actually automatically generating it from the real code because the style guide is guaranteed to be up to date so in this case here so KSS is looking at our source code the SAS and these HTML snippets and builds an entire static set of HTML files that is our style guide so it's got the real markup inside it it has the documentation that it parsed out of the SAS file and then it's going to hot link in the real CSS that Drupal is using in this case so our theme is spitting out a CSS file and it's going to use that CSS file in a theme you should also add a link tag into your style guide that points at that very same CSS now KSS right now it doesn't do this little bit where it sucks in HTML snippets and the quick hack that we did that the previous maintainer did which is brilliant hack for temporary work around is that basically you take a little HTML snippet and you stick it into the SAS file so inside your sort of code comments about your SAS you have a little HTML snippet it works as a hack basically there's going to be some sort of Drupal module that you can configure and say these are my design components that I've configured in Drupal and they're using one of our theme hooks and it's going to spit out each of those files and then KSS will be able to read all of those individual files pull in parse the SAS files the SAS files will say hey this design component is that HTML snippet so it'll point at it inside the docs it'll just do it that way that'll be that's what it's going to do it's not quite there but it's close enough that you can use it now we're iterating this is agile development this is good enough to release so we released it so let's do a demo first I should show you what the actual if you go to the KSS node website you'll have instructions for how to set it up it's a regular node.js so there's like a package.json file for there that's what that looks like but the instructions are on the website and if they suck, yell at me and let's look at oh wait I'm on the wrong screen there we go let's look at no not that one this is a ridiculously long HTML snippet which is why I want it to be in a separate file but basically so here oh I should make this bigger shouldn't I can you see in the back no that's too big 18 so here is down here is our regular SAS rule set we've just documented this footer menu in this case here's our base class footer and then of course we have a wrapper so it's footer menu wrapper and then this is the documentation basically we define what the name is we can also have a brief description the menu that is in the footer this is a horrible documentation you'll never write anything like that that's why it's not in there right now but you can write in several paragraphs whatever you want about this design component right here and then we have the markup snippet which is in this case really long but this is then going to be spit out on the style guide and the last thing here is we were in the style guide we want this to be stuck into and all we need to do to generate the style guide is come on mouse there we go in this case I have a gulp task which runs the kss node command line utility so I'll type gulp style guide because that's way easier than the kss node really long thing with all the different flags on it and it's gone through and read all of these it's parsed all of these sass files and generated all of these html files and it took it 499 milliseconds right let's look in the gulp file real fast just so you can see just so you can see the actual kss node command which is right here so this is some javascript in order to run the kss node thing but it's basically just kss node you point at the directory where your sass is you point at the destination where you want the style guide to be spit out to and then this dash dash template here this is basically saying I would like to use a custom theme for my style guide because to be honest the default theme that comes with kss node sucks I don't even use it that's another open issue but you just point out your custom theme and it uses that theme to generate all your styles and let's go and look at one of them this is the very first one that I ever did for MSNBC it's an internal style guide so you can't get to it from any website and you can see here that just parsing sass files it's generated all of these html files including a list of all of our sass variables what our font faces look like what those font variables look like font sizes this was a team effort so some of this is awful but not necessarily my fault or even their faults anyway one of the nice things about a style guide like this is it's because we implemented this style guide right at the very very end of the project and then exposed a lot of things that we had done wrong and hadn't realized until it was sort of right in our face here we had a variable that was like you know green links except that it was red so style guide is really really nice because it allows you to visualize the actual component as you build it because as you write the css you also write the style guide snippet and if we're using gulp or grunt you're going to have a watch command so you're in gulp watch and it generates the kss and then any time you modify any of your sass files it's going to automatically regenerate the css using sass and it's going to automatically regenerate this style guide so you just run that command using grunt or gulp or whatever test runner you want it starts auto-generating all this stuff what are some other good ones in here so all of these this entire website you know has all of these different design components that are completely documented here and the way this works in an agile development is you know when you start your style guide is going to be completely blank you won't have anything so you have the first feature and you're like okay so I'm going to get a designer front end developer, back end developer we're all on the team here we're going to figure out what that feature looks like how it should work, the UX of all that stuff implement that and then you know the front end developer is going to code that into css and it's going to automatically generate into our style guide so now our style guide has one thing on it and then we go to the next feature from the next feature we look at it like can we reuse anything from the style guide so we look at the style guide try to find out if there's anything that we can reuse if there is great you just reapply that all design to the new feature and you just keep going iterating that way over it and this also works on projects that have started out in a waterfall way you can apply this at any time and just work from the new day one and do it this way and you'll still get a huge benefit out of this I would like to leave a bunch of time for questions so we should go back to the slides and here we go so on Friday we're going to have a Drupal 8 sprint as I told you these naming conventions are part of Drupal 8 and we're trying to get these design component ideas into our css we have it in a couple places we need to apply it a lot more places and the 7 style guide is amazing if you haven't seen it Lewis and a bunch of people worked on it it is not auto-generated right now right not yet and they went to work on it on Friday so you can actually get involved in Drupal 8 core helping to make the 7 style guide auto-generated from the source files so thank you and please I'm sure you have lots of questions go ahead and line up but if you're over in the corner I'll take your question you can just say your question right there so the style guide module was written by Ken Rickard when I worked at Palantir he was a co-worker of mine it doesn't do the stuff that I need right now yet I would like to talk to him or possibly implement a feature request about having a way to configure what my design components are because right now it just sort of spits out some sort of standard components inside this style guide and it would be really nice if I could configure like this is the thing that I need so please build the HTML markup for that and then spit it out into a separate file right and I see it as and certainly it could also be the place where it builds like this entire list of all these different components right so yes I have considered it it doesn't do what I want right now so I grab something that works right now and I'm working on it but I have a feeling it might be part of the future of my process sure yeah we can chat afterwards I would love to chat to you about the style guide module I haven't used style guides before and it seems like a good idea which role does this play in the daily development work which role does the style guides play in the daily work the role there are two things so from a front-end developer standpoint I find it much easier to write the actual class names come up with the actual class names if I can see immediately what that component looks like inside the style guide as I build it so like I have my local copy of the style guide and it's auto-generating and building up the component as I actually write lines inside my CSS it becomes way easier to write my component if I see it being built immediately that's really really helpful and of course the other part of the daily role is basically when we come to no features we should immediately when we first look at the feature and sort of understand that feature then we look at the style guide and decide are there things that we could reuse sometimes there's like oh this thing is like 90% of the way there I've heard that if we tweak it a little bit that can be a new variation of it we can add a modifier to it and make it slightly better for this new feature so that's how it's used in daily use so this also allows to write the CSS or the SES before you actually build a website that's true this is another great thing that we found out because we have front-end developers and back-end developers working on this single feature that builds the requirement that the back-end developer does his stuff first and then the front-end developer does her stuff next so you've coupled that so that the front-end developer can build the style guide first at the same time as the back-end developer is working and then you integrate it at the end that's really handy too often you get from the client you get some kind of material where you don't know is this just for this page and probably the style guide will help with that you send the style guide back to the client and ask, look at this, should this be reused or should it not be reused? that's another thing that especially the style guide is a great focusing tool for the designer as well is because by looking at the style guide as it exists right now they can go, I don't need to completely re-solve this problem I can reuse one of my solutions that are already in the style guide and sometimes if you have you have a client who's providing you the design sort of in waterfall fashion you can do the same thing hey, there's this thing that we already implemented that's like 95% the same way do you really want to pay me X dollars or euros to build this whole new thing because it's slightly different in the design can I just save you some money and reuse this style? another question what role does Drupal Modules and Drupal Themes play? what part of the components go in the theme and what part go in the module? I like to do stuff in the module but then if you decide I want a different alternative theme where everything looks different then maybe it's better to put it in the theme I'm a fun and developer so I'm a themeer so I put stuff in the themes I feel that most of the design components they're design solutions so they but they have markup with them really too so it's a combination of the markup and the CSS together and they seem to fit more naturally in themes to me then you make these things, it's a views plugin or it's a formator and that's module code so the module will depend on the availability of some CSS components then then the CSS components might be in the theme so then the module depends on the theme but tricky I'm not too worried about that I've read some views plugins or some panels plugins a lot of times and those will be inside modules so the templates over there and the CSSes over here that's a real problem as far as Drupal's architecture because it has this artificial separation between modules and themes what we really need for the next Drupal core is basically an idea of a component library where it bundles every component has markup and CSS with it that's what I would like to see and then it gets rid of this artificial where do I put it, the module or theme that question goes away question here the question is if you have a layout system that you're just using does that go one of the things about smacks that you could definitely argue about is do you really need to put layouts in a separate categorization from components because you could think about layouts as being a very very specific component that just does major shifts of your pieces on the page and no other styling that could be a type of component so if you want to think about it in that way go for it, I'm cool with that Pixelwip, did you give your session on the layouts already? so there's going to be an excellent session the video for it is going to show up where he talks about CSS layouts and stuff, so look for that too another question go for it so the question is often your components will be using variables and of course the variables are going to be like your variables partial and stuff so then there's a dependency between the components and those variable names that's sort of a common problem in SAS as well and I would love to see some better solutions and then basically the components can define, I mean the best way right now that I know of is basically have the component define the default version of the variables, so it specifies the variable name colon and then the actual value and then space exclamation point default semicolon that says if you haven't already defined it use this value for this variable that would be the way that you could package up those components and then reason that way but that still requires you, maybe there's some like build thing so some part of your build system goes oh I'm downloading, I'm grabbing this other component that I'm reusing and it's going to like yank the variables out of there strip the word default and then stick it inside your variables folder maybe WA would automate and remove the sort of hard dependency on variable names inside components the other questions is it's actually it's been in one hour so thank you so much for spending your time with me can you go back no, no, I know what to do I have to upload these slides I will also have them what time do you start? start at 5 oh absolutely it's it's it's only a month I mean it's looking for a certain syntax so it can't set it's left and it's not similar to our common so it doesn't actually spare the fact that it's partial it's not and I I I I I I I I I I I I I I