A very horse with a speed of light, a cloud of dust, and a hearty Hio Silver! The Lone Ranger! It's faithful Indian companion, Toto. The daring and resourceful mask rider of the plains led the fight for law and order in the early western United States. Nowhere in the pages of history can one find a greater champion of justice. Return with us now to those thrilling days of yesteryear. From out of the past come the thundering hoofbeats of the Great Horse Silver! The Lone Ranger rides again! Come soon! Let's go, Victor! Are you still there? Teenage nephew of the Lone Ranger rode his horse Victor along the trail near the town of Kenton. The trail followed the top of a ridge overlooking a valley. Suddenly Dan's attention was drawn to a fast-riding horseman in the valley. Then shots rang out. Ho-ho, Victor! Ho-ho! Two men are chasing that rider and firing at him. Come on, Victor! Dan started down the slope into the valley. As he rode, he drew the gun. The Lone Ranger had allowed him to use for practice and fired into the air. The pursuing men turned and raced up the opposite slope as the solitary rider fell from his saddle. Dan holstered his gun and went to help the fallen man. Ho-ho, Victor! Ho-ho! Easy, quick steady! Are you badly wounded? Got hit in the shoulder. If you hadn't come along... I'll banish the wound. Then take you to my friends nearby. I'll take care of them. He gave first aid, then helped the wounded young man to his horse. A short time later, they arrived at the Lone Rangers' camp. Ho-ho, Victor! Ho-ho! Easy, quick steady, fella! Dan, who's with you? It's cute to be hurt. He is, sir. Two men were shooting at him. He's wounded in the shoulder. They left him from the saddle tunnel. He was a mask, man. Boy said he was bringing me to friends. We are friends. Don't worry about the mask. We're not outlaws. First, we'll rebandage your wound and you tell us what this is all about. The wounded man was soon made comfortable on a bed of pine bars. He looked gratefully at his three benefactors, then spoke.  You men have a mighty kinder. I reckon it's safe to tell you everything. Whatever you tell us will go no further, if that's what you wish. Well, my name is Roy Bonnet. I joined the Texas Rangers a year ago. Recently, it was a sign to get the goods on a gang that's been operating them. It was a sign to get the goods on a gang that's been operating them. It was a sign to get the goods on a gang that's been operating them. Well... I came down this way, posed as a drifter and hung around the cafes nearby towns. You finally met one of the outlaws? Yeah. I became friendly with him. Before long, he took me to meet the gang. A leader, heavy-set German named Carl Lubeck. Well, he doesn't trust anybody, and watched me closely. Lubeck? Tutto, he's a man we've been searching for. Hmm, him pretty mean fellow. Well, earlier today I was at the hideout. There are two cabins. I was in one of them with one of the gang. The rest of them were with Lubeck and the other. Man I was with went outside, just as another member of the gang arrived from town. I was about to go out when I heard him talk. Hello, hello, hello. Hi, Frankie. Where's everybody? The boss is Cameron. What's up, buddy? I found out this morning that the man I brought to join the gang is the son of United States Marshal. Holy mackerel! We know him only as Roy. I knew it'd be only a matter of minutes before the whole gang came looking for me, so I got my horse and left. I reckon Lubeck sent two of the men to gunman. Can you tell us the location of that hideout? Yeah, but won't do any good. Lubeck was getting ready to move the gang anyway. The storm coming, Kimisabi. Rain, washaway tracks before we get to hideout. We're not able to follow gang. The storm will complicate matters. Regardless of that, we'll get directions from you, Roy. After the storm is over, Toddlet, I'll go to that old hideout. Dan will stay with you until we return. Right now, we'll find Sheldon before the rain starts. After the storm, the lone ranger and Toddlet went to search for the gang. Meanwhile, the two gunmen who had wounded Roy joined Lubeck and the others at the new hideout. Hold it, hold it, hold it. Shit! I see you found this place all right. The storm slowed you up, huh? Yeah. You, uh, silenced the spy, Roy Barnett? We followed him and started throwing lead. I saw him fall from the saddle just before we left. You didn't make certain he's dead? No, we didn't have a chance. Some hombre on a white horse came riding down the slope shooting as he rode. I figured he must have others with him, so we beat it. You fools! If Roy Barnett lives long enough to talk to me... Well, I mean it does. Nobody can find this new hideout, but we all placed the heavy rains washed away the gang's tracks. Yeah, that's true, but he learned a lot about us while he was with the gang. I'll not be satisfied until I'm sure he's dead. Well, Slinky and I couldn't take the chance to hang around and find out, Carl. Seems right. That hombre and the big white horse meant business. And like we said, he might have had others following him. I want you to go back and try to find out what happened to Roy. But Carl, the rain washed out all tracks. We couldn't trail him or anybody else. He may still be alive. Go anyway. Find out what you can. All right, if you say so. Come on, let's go, Slinky. We'll see you all later. When the two gunmen arrived at the place where Roy Barnett had fallen from his horse, they could find no trace of him.  Do you believe he's still alive? Maybe, but I don't know how we could find out. The hombre on the white horse came down that slope over yonder. Must have been right in the ridge trail. Yeah, that's right. Maybe if we go up there and search along that trail, we'll hit on something. It's worth a try anyway. Yeah, Carl will be sure if we don't come back with definite information. Let's go. At the camp, Dan Reed watched over the wounded man. Roy dozed from time to time while Dan sat on the nearby stump, ready to attend to the stranger's needs. The camp was located in a wooded grove on the side of a hill. From where Dan sat, he could see part of the trail as it circled the hill below. Suddenly, he stood up, looking sharply as he caught sight of two horsemen moving along the lower trail. Two men riding a ron in a palomino. They looked like the two gunmen who wounded Roy. Then Dan realized that two horsemen might be searching for the wounded man. He knew if they located the camp, he and Roy, who was in a weakened condition, would be no match for them. Dan hurried to Roy's side. Roy! Roy! Huh? What's the matter? The two men who chased you. I'm sure they're coming up the trail. Hand me my gun. If they find... No use, Roy. We'd be no match for them. I'll help you into the tall brush and hide you there. I'll hide your horse back among the trees. We'll have to hurry. What about you? They see this camp. They look around. They'll follow my horse's tracks. I'll mount my horse and leave those two men away from here. I think they'll be sure to chase after me and I know my horse can lose it. It's risky. Now I'll try to keep out of gun range. Hurry, they'll be coming along near here. As soon as you're out of sight, I'll leave. Come on. Quickly, Dan helped Roy to a safe hiding place. Then he led Roy's horse back among the trees out of sight. As the boy ran toward his horse Victor, he could hear the approaching hoof beats of the outlaw's horses, though they were still out of sight around the bend.  Come on, Victor. Dan was already racing along the trail ahead of them when the two gunmen rounded the curb. Oh, boy. It looks like they lucked ahead of us, sir. The same ombre and a white horse that came down the slope of the trail. We'll have to hurry. We'll have to hurry. The same ombre and a white horse that came down the slope after us. Let's cut him. No, no, wait. Maybe we can catch up to him. Try to take him alive and then take him to Carlin to hide out. Carlin forces to tell what happened to Roy Barnett. Come on, get up there.  Dan's horse Victor, like the Great Stallion Silver, could outdistance most any other horse. And soon Dan was leaving his pursuers far behind. Come on, Victor. The boy planned to outrun the gunmen, cover his trail, then circle back to the camp where he had left Roy Barnett. But Sam and Slinky realized they couldn't catch up with Dan, so they turned off the trail and rode straight down the steep slope to intercept him. Later, as Dan approached some large boulders along the trail near the foot of the hill, he was taken by surprise. Stop where you are and reach, Mr. Hold it, Victor. Hold it. Get up there. Hold it. Hold it. This is the same ombre, Sam. I couldn't mistake that horse. Well, I didn't expect him to be so young. He's plenty husky. Better take his gun while I keep him covered. Right. I got it. Now, speak up, you. What is the ombre you found on the trail in the valley a while ago? What ombre? Don't act like I can't tell you what I mean. You rode down the slope into the valley when we were chasing an old, good snoper. We know because we couldn't miss seeing this white stallion. There are other white stallions. Stop stolen. Tell us what we want to know or I'll... Hold it, Slinky. I can wait. Well, you're going to give us straight answers or not? I don't know what you're talking about. Answer him, you young man. I don't have to take that. That's enough. One more move and I'll plug it, young sir. You deserve that, Slinky. You knocked your right out of the saddle. I reckon he is kind of husky for his age. He moved in on you so fast it didn't know what happened for a minute. I ought to put a bullet in him right now for that.  Take him to Carl. Maybe after he's through he'll turn his young fellow over to you so you can teach him a lesson in fist fighting. You know, come to think of it, I might be better than a boy.   Maybe. All right, let's head for the hideout. Right ahead of you and remember, we both have guns ready to use. Get moving. Good. Come on, get up there. Later, the Lone Ranger and Tonto arrived at their camp and pulled to a stop. Hold on, hold on. Ah, King Sabi, Dan not here. I may not see you wounded, man. That's strange. I wonder... I'm over here. He's back in the tall brush. Come on, Tonto. A moment later, the Masked Man and Indian bent over Roy and heard what had taken place. When Roy finished, the Lone Ranger spoke. Tonto, Dan took a great risk. Those men got close enough for their boats to reach him. We pick up Dan's trail. Go find him. Yes, and if anything has happened to him, I'll find Carl Lubeck and his government and make them wish they'd never been born. Come on, Tonto. The curtain falls on the first act of our Lone Ranger adventure. Before the next exciting scenes, please permit us to pause for just a few moments. Making sure Roy was well-hidden and had a gun to defend himself if necessary, the Lone Ranger and Tonto mounted Silver and Scout and set out to find Dan. Yes, yes, yes. Come on, Silly. Get him up, Tonto. Carl had selected was an unusual one. Underneath an overhanging bluff along a river, there was a wide ledge reached on either side by two narrow paths. Sometime before, a prospector had built a cabin on the ledge close to the cliff wall and had dug into the cliff in search of gold. About 20 feet below the ledge, the river formed deep rapids between the cliffs. Dan Reed was taken down one of the steep narrow paths to the door of the cabin. Oh, my God. Sam Slingy, who is this you've been here? This is the fellow who rode down the slope taught us firing his gun. He must know about Roy Barnett. You were run off by this youth? He may be young, but he's tough, Carl. Slingy found that out when he hit him to make him talk. Slingy ended up lying on the ground. Yeah, and I haven't forgotten it. When you're through with him, Carl, I want you to turn him over to me. It should be a good fight, Carl. That will come later. What is your name? Dan Reed. Where is Roy Barnett, the man you must have found on the trail? What happened to him? I don't know what you're talking about. Can you see that, Carl? We know he's the one we saw, but he won't tell anything. Make him talk, Carl. Yeah, don't let him hold out on you. Reed, it does you no good to say nothing. Speak up. Tell what you know about Roy Barnett. There's nothing to tell. I'm going to have another squall, looks like. Yes, that's good for covering tracks in case this fellow has friends who may want to find him. We'll go inside. Keep him covered, Sam. Let's go. Sit down, Reed. Now talk. Do you hear talk? I'm not telling you anything. Tie him to the chair until the storm is over. Then if he hasn't decided to talk, you take him outside and turn him over to sleep. The lone ranger and talker had followed Dan's tracks to the boulders, where he had been surprised by the two crooks. They started to trail the three from there when the storm broke and they had a six-year shelter. Meantime, back at the camp, Roy Barnett was concerned when the storm broke. He realized the lone ranger and talker would lose Dan's trail because of the rain. And since Dan hadn't returned as he planned to do, Roy was certain Loubeck's men had caught him. No, you stand here. I'm wet already. Feel able to ride now, get my horse, then go to town, tell the sheriff what happened. After the storm had passed, Carl again tried to question Dan Reed. Then impatient with the youth's attitude, he turned to the men who were watching.  Untie him and take him outside. Come here, you slinky. We will have your chance now to use your fists on him. Yeah, I'll make a good job. The outlaw is ready for some entertainment. Quickly untie Dan Reed and let him outside. A few moments later, they informed a circle around Dan and Slinky. All right, you. This time you're gonna know what it's like to get some real punches. I'm ready. Dan stood a moment waiting. He felt somewhat nervous facing the full-grown outlaw. But he noticed that Slinky showed indications of dissipation and decided to concentrate his blows on the outlaw's bulging stomach instead of reaching for his chin. In the seemingly uneven encounter, Dan was relying on the training and knowledge of fist-fighting he had learned from the Lone Ranger and Toto. Slinky suddenly moved in fast. This'll show ya. I wanna be shown. Watch him, Slinky. You can hit hard. Not hard enough. Dan was light on his feet and moved about in such a way that his opponent had difficulty in hitting him. For a few moments it seemed that Dan might be beaten down by sheer force and weight. But he noticed that Slinky was breathing of difficulty. Dan's well-placed blows to the mid-drift were telling on the outlaw. I'll break your neck. Not if I can help it. The men grew tensely silent as the fight continued. In spite of themselves, they felt a certain amount of admiration for the youth who seemed about to get the best of a man twice his age and tougher than most. Finally, Slinky moved in determined to beat Dan down with a furious onslaught. I'll finish this.  I don't think so. Why, Jiminy, it beats Slinky so fighting. Slinky, get out of my sight. Go on in sight. First I'll take these guns from you. Give it to me.  Men, tie his hands and feet and then throw them into the rapids. The men, still impressed with Dan's fighting, hesitated a moment. That moment was long enough for Dan. A circle at parted and Dan saw that he was near the rim of the ledge. With a sudden and unexpected movement, he ran and jumped into the river below. Out of my way. Give me a chance to shoot that tit. I'll use it, John. Think I hit him, Carl? I don't know. I couldn't see him. He hasn't come up.  He can't survive the rapids. Let's forget him and go inside. After Dan hit the swirling water, he swam below the surface, moving with the current. He was an expert swimmer, but tired after the fight, he realized he had to battle for his life in the water. Alternating swimming and floating, he finally managed to reach a point beyond the canyon. I'm beyond the cliffs now. I'll have to make it to shore somehow. The exertion of the long swim after the fight with Slinky overtaxed Dan's strength to the point of exhaustion. The shore seemed far away and he was relieved to see a rock between him and the shoreline. Dan made his way to the rock and clung to it, gasping for breath. This rock, if I can hold on to it long enough to get rested, maybe I can make it to the river bank. Meanwhile, the Lone Ranger and Tonto had written the trail searching for Dan and the outlaws. As they rode along a bluff near the river, the Lone Ranger said, Thought it was terrible to think Dan needs us and we can't get to him. That rain had held off a little longer. We know tracks started from boulders along river trail. Maybe if we keep looking, we find hideout. If we do that, wait a minute, Tonto. Hold on, Tonto. Hold on. Why we stop, Tonto? I thought I saw something move on that rock in the river. I'll use my field glasses. Just a second. I know a man is clinging to that rock. We'll try to get to him. Come on, Tonto! A short time later, the two men reached the river bank opposite the rock. Oh, it's over. Oh, easy. Let me see him. Maybe he's not able to hang on long. Look closely, Tonto. That's Dan. I'll get it. Hastily discarding his jacket, gun belt, and boots. The Lone Ranger plunged into the water. Hold on, Dan. I'll get you. The masked man caught through the water with the speed and form of an expert swimmer. Within minutes, he approached the rock. Slip him into the water, Dan. Place your hand on my shoulder and I'll get you a short. Yes, sir. Now, take it easy, Dan. We'll make it all right. You'll soon be safe. Soon, Dan and the Lone Ranger waited ashore and the boys sank down wirily to rest. Good thing, Lone Ranger. See you on rock, Dan. As soon as you're rested, we want to know how you got there, Dan. I'll tell you in a minute or two, sir. It's too bad you got all wet coming up to the rock. That doesn't matter. As long as you're safe. But you really didn't have to swim out. I could have made it to shore after I rested a little. Well, Dan grew up fast. Him get so, him not need much help anymore. Yes, I know the jokes on me. I thought I was practically saving his life and soaked all my clothes doing it. Now he tells me that I made it alone. Well, anyhow, I sure was glad to see you. Thanks, Dan. I'm sure you were. Now, tell us what happened to you. Briefly, Dan told of his adventure with the outlaws and of his fight and escape. He finished by saying... They still have Victor, sir. And the gun you let me use for target practice. The gun my father owned. You think you can lead us to the path that approached the hideout? Yes, sir. But there are eight outlaws. You and Dan couldn't go against them alone. We'll take you back to the camp, Dan. You ride Roy's horse to town to get the sheriff. Then we'll move in on you and move back to his gate. Dan rode on silver with the Lone Ranger and with Dan, they started back to camp. They had gone a short distance along the trail when they met Roy with the sheriff and the posse. Led by Dan, the horsemen started for the hideout to surprise the outlaws. Later at the hideout, Carl and his men were in the cabin planning a holdup. Guards were posted at both paths leading down to the ledge, so they felt secure. We'll rob the bank in town, then leave this territory tonight. We'll head for some place... Oh, look out the window. Men coming down the path to the south end. What? Some are coming down the other path, too. They must have overpowered the two guards. We'll be trapped in here. Get your guns and start shooting. The careless men moved toward the cabin from either end, using boulders on the ledge for protection and firing continuously. The outlaws realized they were trapped and fought desperately, but it was a losing battle, and before long they were subdued. Several of them had been wounded, and the rest threw out their guns, then came out with hands high to face the sheriff and posse. Well, we finally got him. Sheriff, that one is Carl Lubeck. I recognize him. I've seen him build time. Hey, Carl. Look, there's a young fella. I thought he was done for. Ah, he has a charmed life. All this has come about because of him. That masked man must have had something to do with it. I remember hearing about a masked hombre who helps a law. Well, you're looking at him right now. Sheriff, we'll get down the course and we've got to leave. I'm sure you and your men can handle things right, mister. Adios, Sheriff. Adios, everyone. Adios, sir. Oh, this happened because of a youth who knows too much. I reckon he knows so much because the masked man's his friend and taught him plenty. Who is the masked man? That question shows you have a lot to learn, Lubeck. That masked hombre is none other than the lone ranger. This is a feature of the Lone Ranger Incorporated, created by George W. Trenville, produced by Trenville Campbell Mule Incorporated, directed by Charles D. Livingston, and edited by Fran Stryker. The part of the Lone Ranger is played by Brace Beemer.


Hello and welcome to Toffy TV. This is the Sunday supplement from Everton Neil Norwich 2, a gwrs yn park yesterday. If you don't know by now, basically I did a Sunday supplement which is basically a look-back after the kind of dust has settled. But it hasn't really settled yet because everyone's up in arms about silver. Is he sacked? Is he not sacked? I've heard some rumours that he's been sacked and people are going to come in tomorrow. The other 23 has been told not to come in. I don't know how true that is, but I'm talking about the game and I'll get the silver after. I can dissect the game. With Pickford and Gulls, D.B. at the back, Hullgate, Mina. Lucadine, as expected, in there. Coleman obviously still on the bench and rightly so at the minute. Yn y edrych yn oedol yn Tom Davies, Sigurdtson, Henry Charleston, left with Cenk Towson and Tia Walcott on the right. It's in the line up, isn't it, if I'm going to set the tone. People are saying that the whole time this season he's not the right man for the job. He looks at the players and the recruitment and all that type of stuff. We look like we'd bought good in the summer and I know Goebbamon's not been around, he's been injured and stuff like that, but looking around the team, he's just not good enough to be playing in our first team. I look around the Premier League and he's struggled to get in the most side, the way he just strolls around the pitch. Tom Davies I like, he brings the energy in that but he was just dropping too deep the whole time and the warning signs were there. They got in a few times, Pickford made a great save. When they got in, I think it was Pereira, Hernandez, it was true on Goebb and Pickford made a great save. The warning signs were there before Cantwell got the first goal and to be fair he took this goal very well. How many times do we say it, we just look out of ideas, lack of energy, lack of mobility. Even Silver said that to the game, it was lack of mobility. He couldn't find a way to upset knowledge. I'm sorry but at home to knowledge you should be beaten knowledge and that's three promoter teams that have come up now and we've lost against. It's just not good enough, it's not acceptable. Last year I might have said okay well he's in a process where he's building a team there but he's pretty much built his team. Okay he might have been lucky in terms of getting centre backs in but other than that he's brought in everybody else. Moise Keane doesn't seem to get a look in. He scores two for doing the 21s Italy and doesn't get near the pitch for us and all the talk all week has been Moise Keane needs to leave, he's linked to Roma and all these other clubs. Why is it these players that we have, the young players coming through, are always linked to top clubs that they could go to? You remember look when he was a Leipzig then you look at Vlasic, big clubs were looking at him before CSKA. What is it we're doing wrong with these players that we can't bring them into the team and let them go? Like Shane Towson, last time I did this on this up and I was like okay maybe he needs a couple of games but I do look at him and I just, unless he has someone maybe quick up beside him, what does he do? He's not your traditional number nine but he's not quick and he can't get in behind and you know it just baffles me, when Alan Lys brought me in he didn't know whether he was going to be able to play in the Premier League. Like what's the deal there? Richard Isen, you know he's good in little spells but I still think he gives the ball away far too much and he does get away with it a lot because he would I suppose pop up with the odd goal here and there but I think we need more from him as well, we need more from the players too, it's all well and good to play with the manager but it's not one bit of fighting any one of those players. You know we're sitting here every week complaining about someone if it's not Pickford making a mistake for free kicks or whatever else or just being a moron all the time, it's, we're talking about Kavallun not scoring enough, we're talking about Schneidler being poor, we're talking about Delth not doing a lot, you know. We're always complaining about someone and it's because the performances are just not being good enough. We were looking at the start of the season, the players that we brought in were like, okay obviously a juicy kind of game was a huge loss to us and I think it's showing more so now how much we've missed him and how key he was to our play and the way he just broke up everything. I know he wasn't great on the ball but breaking up stuff he was fantastic. Probably up there were currently for the best at that specific role but I'm just out of ideas. You know, just like even in the second half we just didn't look like we were up for it. Every time we got a goal down you might as well just shut up and say alright that's and go home, pack up and go home because they just never look like they want to get into it at all. I'm just out there watching the Manchester United and Man United, I'm not playing well at all and they're coming from 2-0 down to get to 3-2 and they obviously drew but the fact that they showed that bit of fighting character, our lads would have done it and we got B-boy Sheffield United as well. So something's going to change and obviously they got to a second goal and I know I'm not really talking too much about the game, just kind of talking about an assessment of probably our season at this point but it's just because I'm so frustrated, I'm sick and tired of the same things and you know, I was all for giving it to the time and everything else but it's just as things go on and on and on and he's saying he's not worried about his job and stuff that he's probably sacked by the time this video goes up. The thing is, who do we get into a place from? I personally, if he goes, I would like Raphael Benitez and that's not going to please everybody but that's my opinion and you're entitled to yours as well as much as I'm entitled to mine but he's a winner, he's won things wherever he's gone he's got the places where he's not been liked and still won things he's got Chelsea, you know, he went there and he won the Europa League with them and he's done quite well with them and the fans just never liked him at all and that was because of his association with Liverpool there'll always be that thing where you call the small club but I mean, if he wins at Anfield, you know, I think God will be forgiven or if he bet Liverpool as every manager I think God will be forgiven quite quickly football is a results-driven business and if he's getting the results then who's going to care if he used to manage Liverpool I don't think he'd care either if a couple of fans didn't like him well, it's obviously going to be more than a couple but you know what I mean and this might be a bit controversial but I don't really care I want someone in who's won trophies in the past not Sam Allardy, not David Moyers, not Big Dunk not any of them, not David Runsworth start as you mean to go on and go for the best manager you can go and get out there and for me at the moment, the only one that's out there that's realistic and that we could possibly get is Benitez Pochettino won't come to us the likelihood is he'll go to Man United at some point if not he'll go to Bayern and we just can't contend with that right now we're not in that elite level that they are at but you know Benitez comes in let him buy a couple of pairs in January to add to what we have and sell whoever he doesn't think would be good enough and go from there and that's just how I feel about it I'm sick and tired you get a couple of decent results and you're like oh yeah we're going to get back into it now and then boom lose to Norwich or you lose to Villa you lose to Sheffield United or you lose to Bournemouth you know the list goes on and we're coming into December now to play Leicester to play Liverpool to play Man United Chelsea Arsenal we've got games that we have to like teams we haven't even played that are a lot better than teams that bet us and that's the really worrying thing is that we have to play all these teams and we can't even put up a fight against the Leicester teams now we know we've done well against the bigger teams in the past but it's just not good enough it's not acceptable as fans to be accepting the level of mediocrity that the players are producing all the time and too many of them get away with it you know obviously a Wobie came on in the second half and personally I'm not a big of a fan of him he gets us up the pitch now but he loses the ball an awful lot Sigarton poor again by the way just anonymous and Coleman coming on for Sidiw I'm not too sure what that was all about but look I mean they won 2-0, they got a goalie on credit to them but they made us look absolutely average and the teams should be ashamed of themselves the position that they're in at this stage this season after being tipped allegedly to be top six contenders the way we finished the end of last season let us know your thoughts in the comments on the game on the managerial situation and just everything in general let me know your thoughts in the comments obviously me Paul Neil from Irish Football Fan TV and if you want more videos from me check me out on Irish Football Fan TV and drop a subscribe and if you are checking out the videos drop a comment saying that you are coming over from Toffy TV to have a look and if you enjoyed Toffy TV's channel also drop this video a like and let's speak to you guys soon thanks for watching


We're going to have an interesting time here because This is the first time I've given this talk and usually every time I give a talk for the first time It's got some rough edges around it because I prepared it within hours of giving it so The good news is that I'm giving this talk tomorrow So if you feel like not watching me fail potentially here You can come to LinkedIn in Mountain View tomorrow and watch me give the same talk over again Or you can go to New York in a week from Thursday, and I will be giving the same talk there They're gonna get a really good show so So and and Rob's gonna be everywhere with me So you can also see Rob speak at in Mountain View and in New York as well He's gonna be talking to us about something just as cool if not cooler than what I'm gonna be talking about so My talk is titled taming CSS and Ember JS apps and really This is like burying the lead a little bit. I think of a title I Have been Well, I should introduce myself Bryn, I see a lot of familiar faces in the crowd. I've trained a lot of people probably here I do ember training and consulting. I've been doing that stuff For basically five years almost now if not over that I've been involved in the ember project basically from the day it came out and I've been a longtime member of the Ember JS core team so Warning I have a lot of controversial controversial viewpoints about CSS that you're going to be subjected to during this talk This may be one of the talks that I regret giving but somebody needs to give a talk like this I think and So here I am to kind of share with you The thoughts about CSS that I've been formulating over the last year that I've been in seclusion I Was at Ember conf and many people were like, where have you been man? And the answer is I've been thinking very deeply about CSS And and it's not been necessarily a great time It's had its ups and downs, but I'm very excited to be sharing with you what I've what my current thoughts are on CSS today So It's quick plug. I'm doing a very cool little advanced Ember JS mentorship program check out this page If you're interested it starts June 7th, it's kind of innovative It's six weeks two days a week for two hours a day and we're gonna build four apps It's pretty cool. So if you're looking for advanced training, this is the place to go so Who likes CSS here raise your hand Good There's a lot of reasons to like CSS I'm going to hate on it a bit But not too much really, I think CSS is a remarkable technology and you can see Our friends in native land Like CSS quite a bit and they like it so much that a lot of times Mobile and native apps will just do a ton of stuff in web views because it's easier to lay out content on The web than it is on any other platform Okay, so CSS is something to be cherished But it needs some help to scale I would say So It's awesome, right? Metaphor This is how I write CSS usually I mean, you know, I've actually been very spoiled by CSS and Primarily, I shouldn't say I've been spoiled by CSS I've been spoiled by the teams that I've gotten to work on because I usually Probably over the last five years of being like an Ember expert the amount of CSS I've written is probably ridiculously small in comparison And I want to change that and that's kind of why basically I feel powerless To some extent when I want to build a web application and I want to do it on my own over a weekend I feel powerless to do so because I didn't accumulate the wealth of knowledge that the really great CSS wizards on the teams that I've worked on already had and I want to build something that lets me as somebody who doesn't want to be an expert in CSS Do amazing things like they can okay, so I Feel like I'm doing web development in assembly still despite the fact that we have all this great tooling on the JavaScript and markup side with Ember and HTML bars and You might as well I feel like I might as well just kill myself right now instead of write CSS For a reasonably complex application So I think I'm perhaps better title for this talk might be CSS the good parts I pay homage to Those who have come before me With this title, but I think really my controversial viewpoint probably number one of the evening is that Basically the number one best thing about CSS right now are classes Classes are amazing. I'm gonna touch on this a bit more I have a very controversial opinion, which is that you should basically write no CSS that is not a class So do not use IDs Do not use element-based selectors and in fact I would go so far as to say do not even use Descendant selectors in any way shape or form treat CSS as if it was a key hash The keys are your CSS classes The values are your property buckets of rules What's the second best thing? Basically nothing. All right Classes are the way you should write CSS You should not write it any other way and I'll try to elaborate on this a bit more But I have some patterns I think that I that are the way you should write CSS and I'm gonna try to touch on as much of that in the 30 minutes that I have so Again, my name is Eric I have a problem and that problem is CSS and I think the first step to Solving this problem is to accept that you have the problem and I'm curious How many of you raise your hands if you feel like you have a CSS problem? Right, I mean I feel like who so when I do training and stuff usually when I ask a question in the affirmative People will not raise their hand So I'm curious are there too many people do if you do not think you have a CSS problem Raise your hand, please. Who does not have a CSS problem? All right Well, do you guys keep your hands raised if you think you're an expert at CSS? Right, so basically the people that don't have CSS problems are the CSS experts, right who have figured out the right pattern For them to write CSS in as bulletproof of a manner as possible, right? I Want to bake patterns like that into the way that we write CSS in ember applications So that if you learn ember you learn how to write CSS in the maximably You know successful way that you will avoid every possible you know Pothole that you're gonna run into right so we're gonna try to talk a bit about what I think that is right So we have a problem. What are the problems with CSS? This is a short enumeration of the high-level problems. CSS is globals based programming What do I mean by this? Every CSS rule you define is like defining a global variable on the window in Javascript Okay, the rules that you define are Tech debt Every rule you write becomes tech debt the second you write it And the worst part about this is that they're globals, right? It's a disaster so I Have a controversial viewpoint which is that basically you should not write any global CSS The only global CSS that I believe is allowed is like font Font and font size on the body or HTML element. That's the only global CSS you should probably ever write so What else so it's obviously globals is a problem and the reason that globals are a problem is because we lack Modularity we lack mechanisms to have encapsulation and isolation in CSS. All right, so I'm gonna prescribe some ideas for that Dead code removal who has ever successfully deleted CSS without breaking your application raise your hand All right, that is a problem We should be able to do that who has ever successfully refactored CSS that other people relied on and did not break What they were doing raise your hand All right, nobody raised their hand We have a problem here people, right? This is general programming Stuff that we should have a grasp on in 2016 yet. We do not yet with CSS, right? This is very problematic a lot of my initial thinking was influenced by this talk by a member of the reacjs core team I think this is a great talk if you haven't seen it the slides slides are pretty good They enumerate a lot of the problem space That we're trying to tackle and they do prescribe some solutions I do not agree with some of them, but I agree with others To be clear you might notice this thing is called CSS and JavaScript. I Do not think CSS and JavaScript is the answer. I think it's actually a bad idea, but I Understand why they think it's a good idea and I've been there at times That's like hitting the you know, that's like writing CSS and JavaScript is like the extreme escape valve For kind of solving some of these problems, but I've challenged myself to not Go that route and to find solutions that work in CSS today Pragmatic things that we can do today to start challenge to start solving this problem. So globals so Everything in CSS is global. So the best thing we can do is to write globally unique class names right There are conventions like BEM or smacks or whatever that prescribe rules for naming classes globally I think those are generally good ideas I'm a fan of BEM personally, but honestly, I think that it's ridiculous to have to write them by hand And so I want to prescribe a tool that will auto BEM all of our component styles All right, so I'm going to talk a little bit about that later, but that tool does not yet exist I'm in the process of building it and actually you have in potentially to help to thank for helping build that tool over at nest Shadow DOM is another possible solution. These both have caveats Because there are kind of solutions here Most of the existing solutions are not perfect for one reason or another Shadow DOM unfortunately is one of those solutions that I do not believe is perfect and I think that I've gone to a lot of Effort to like defy is a system that works today without shadow DOM But is somewhat forward thinking about shadow DOM and is compatible with that world Why what's the there's I'm not gonna talk a lot about shadow DOM But I'll give you one brief description of why shadow DOM is kind of not ideal Shadow DOM is a little bit too much like an iframe for your CSS. What does that mean? It means that imagine in your ember components you had to import all of the core styles that you used every single rule right so basically it's not awful but it's hard to iterate towards and I feel like in fact if you write CSS the way that I prescribed shadow DOM kind of falls out Because you don't write global styles So you don't have global stuff you don't have a lot of shared styles and you're gonna write component specific styles You're not gonna have a lot of stuff to import in your shadow DOM I have some concerns about performance of shadow DOM to these are mostly unfounded I'm just suspicious because if we're gonna tell everybody on the web that they need to like import Their common style sheets then we've got a lot of duplicate style sheets loaded in memory And we're potentially we have hundreds of those on a page at a time And then I think they don't really have a fully baked shared memory system in mind for these shadow dot root boundaries and stuff But I'm sure that's gonna come with time. So I don't want to put who shadow DOM. I think it's a great technology I just don't think it's as iterative of the technology as we could ideally have And I've tried to advocate for having some kind of intermediate Step, but I've unfortunately not been able to get much traction with that idea on the the standards and on the browser vendor teams so TLDR is I say we can write we can have conventions for Writing our class names globally unique and we can have tools that make it easy for us to do that by default Modularity so this is a bit media of a topic I would I would I would challenge you to rethink the way that you write CSS completely and try to draw parallels With the way that you write JavaScript code CSS is unlike anything It's it's really a kind of bizarre programming System programming. I dare call it a programming language. It's not it's kind of a weird declarative System, but it's unlike anything else And I think this is a lot to blame for the problems that we have with it at scale And so what's an example of this? Well Basically, there's no concept of a module in CSS, right? We only have the global scope. There is no such thing as like a Sub-scope. I'm gonna talk a little bit more about this I think though the good news is that we have preprocessors today that kind of give us faux modularity and It's not perfect, but it it's a thing we can use to do our jobs today and it'll be interesting to see there are some there's a bunch of you know Alternative like systems that are doing good work in this space But I unfortunately don't think most of them have quite cracked the nut fully And hopefully I'll have enough time to convince you that maybe I have a little bit Or at least get your interest because honestly this talk is probably like one in a series of three There's a lot of stuff to talk about here So I'm gonna try to scope this down to the bare essentials. So I Want all of these things to be true. I want to be able to delete and refactor CSS Just like I would JavaScript code and I ideally wanted to do that feeling confident When I'm doing it. I Am a strong believer that runtime overrides. This is pretty controversial runtime overrides should be avoided at all costs Now that is pretty crazy sounding. What do I mean by runtime overrides? I mean Basically, I am not a believer in like the bootstrap model of CSS So bootstrap, let's say beat button has a BTN class Do you like BTN you do BTN default and then maybe you write your own class that overrides some of things that BTN default did I think this is generally a bad idea Why because you can't actually like look at the markup and Really like understand what that thing's gonna do You almost certainly have to open up the dev tools look at the style inspector and like look at what actually happened Right and and it's not fun to live in this kind of Unconfident world of writing styles and writing apps So I would like to see tools that like Linted and when we could actually catch ourselves when we're trying to override a rule that already existed and It would yell at us and say, you know Kind of like how JS hint would if we'd like to clear the same variable twice in a function, right? I think we probably need something like that And runtime overrides reek they wreak havoc on our ability to refactor Why because when somebody overrides us if we're bootstrap who's done a bootstrap upgrade does anybody done a bootstrap upgrade It's a disaster especially if you didn't have the foresight to use variables to do most of your customization If you did runtime overrides, you're playing whack-a-mole.  Oh, it was to override the behavior of bootstrap to that's not no there in bootstrap 3 Right, so it's it's insane And that's why I believe that styling needs a public API For overriding. Okay, so we're gonna talk a little bit about what I mean by that This is a this is the like core tenant. I think of my belief system around CSS is that we need public APIs For our CSS We need to treat our CSS like we would treat our components Components have public APIs Why don't our styles? I think functions are a really good metaphor to think to frame your thinking around this stuff Here is a function What do functions have they have arguments and they have return values? Right So you pass data into a function and then it returns something That's likely dependent upon the arguments you passed in right Maybe even it's a pure function. That'd be great No side effects Here's a component a Component is like a function you pass arguments into it. What does it return? It returns some rendered markup some rendered DOM that gets appended to our document body Right where it's paranoid CSS does not have functions. This is very problematic This is I believe the nail in the coffin of CSS Good news sass does What are functions and sass? They're mix ins so I dare to Suggest that perhaps a pattern like this is Quite good for implementing your component styles What does this give us? Well, it gives us a function Right, what can these functions have they can have arguments? What does a mix in return in sass it returns a set of rules? right Those rules get here's our function getting called with that include Right now we could be optionally passing parameters here It has positional arguments and named arguments. It's quite nice What's gonna happen? Well, whatever rules we define in that mix and are going to get Added into our my component class, right and here we're gonna have a convention We're gonna say that your component should have a you know your component has a unique name globally at the minimum We should have a class that Is coupled to our component name and that is the you can almost think of it as like the namespace It's actually a prefix for all the rules That are component are all the CSS rules that our component has right So I believe funk so functions are units of work You cannot have composition without functions You can building ambitious apps requires composition. We know this already with components They're great We need the equivalent in CSS for composition Mixins are the closest thing we have to that today Building ambitious apps also requires conventions to do it at scale so I've met my first foray little did I know I actually wrote this add-on ember components CSS like during ember conf last year and I Got I was like man CSS really grinds my gears and I was like, you know what? There's a lightning talk spot. I'm just gonna build a thing and I'm gonna start talking about CSS and I Wish I should have gotten a screenshot I released this thing and I started posting issues on it about my my ideas and then it became like big-ass threads of everybody bike shedding the hell out of my ideas and Telling me why I couldn't constrain CSS the way that I wanted to basically it's too Too crazy and so that was that was unfortunate. I don't think that people are I Part of the reason I want to give this talk is just to make you aware of the problems You might already have and I'm gonna lightly some prescribe some stuff in further talks I'm gonna actually talk a bit about some of the stuff that I'm building that's gonna make hopefully some of these things baked into ember and maybe even become part of ember if I can survive the bike shedding of the core team so Component base CSS this ember add-on ember components CSS what this was really about which I don't think was that Shocking of a concept was that We've got JavaScript files and it handlebars files for our components We should also have a CSS file right most people do this already, but they do it in an ad hoc way They're probably not diligent about their naming. You know, it's annoying So this was a system that piggybacked of concepts of pods And ember sale I and gave you the ability to drop in a CSS file in your pod directory And it would automatically slurp them all up So you didn't have to write manual at imports or any of that stuff yourself, right? And it did have one I did the easiest thing I could in the hours of time that I had you know Prescribed for this before going up and talking about it ember count and that was to basically say the good first step for behavior that this component could give you is to automatically nest All of your component styles in a globally unique identifier. Okay, so what did that look like it basically just meant, you know Everybody's probably familiar with sass. It meant like you have my component and I actually generate some kind of random number So that you can't guess the name of it and Then I wrap that thing around all your styles. So they're all descendant selectors though, right? I knew at the time that was not ultimately the endgame, but It turns out the endgame that I've wanted to get to is quite complicated and it's actually difficult to pull off Around the constraints that have existed in ember CLI actually And there's a lot of unknowns and it's taken me basically I wrote this out on like what March 2015 here I am April 2016 Still not done executing on the vision that I have for this add-on, but I'm here to tell you What I'm thinking so that hopefully I can enlist your help Or convince Robert and then he'll just do all the work for me. It's quite amazing So Component-based CSS I think is a really important concept and it's not controversial. Everybody's pretty much on board. I Also prescribe as a convention BEM It ultimately doesn't actually matter as long as you have a consistent naming structure that will get you Globally unique class names, right? What the heck is BEM for those of you who do not know it stands for it's an acronym for block element modifier What does this mean? Well block basically means component and ember element means some Subarea of functionality inside of that component. So let's say you had a button that happens to have a label Modify the modifier the element is like the label tag that you might have inside of your components template, right? And then modifier is things like states like disabled or active or focused or whatever the different states that any That a block or an element might be in and so you can check out get BEM calm. It's really really basic stuff. It's pretty simple Basically, though what it prescribes is a pretty bulletproof way of I have the wrong page up It gives you a pretty bulletproof way of naming things where you will not accidentally make mistakes of like using Dashes only as delimiters because you actually want to make sure like dashes are valid in component names So you don't want to like Accidentally define rules that happen to end up being the name of a component later on And so for example here, we've got a modifier modifiers use double dashes So imagine this would be like my dash component double dash hidden or disabled or whatever There's also Elements and those use underscores The reason we're not we're using double dashes and double underscores here is to differentiate from a single dash Which might end up being the name of a component that gets created later on Right, so it's important to have some kind of delimiter here I envision a system that is not just BEM But it also adds GUIDs that people can't guess and this gives us Imulated encapsulation and isolation a la shadow DOM and I'll talk a little bit more about that but So my auto BEM add-on would an ember component CSS kind of does this But basically the idea is that you don't know what the hell your class names are And I'm gonna write you a clever add-on that you get to write nice CSS The way you would expect to write it in a globally scoped environment. You can write dot urgent And that's automatically gonna become My component dash dash urgent or underscore underscore urgent or whatever, right? And then if you wrote urgent in your components template and I also transformed that for you as well automatically, right But then I also added these hash these extra random digits Because that prevents somebody who doesn't understand the naming system from accidentally using the CSS somewhere else That was only meant to be used inside of a component itself. Okay, so long story short on that Let's dive into some code. This will be the interesting piece so Let's see I didn't really plan this part out too well So Let's look at a very simple example So this is without an auto beaming tool so Here's what a button might look like this is a fairly complicated button And unfortunately it has a lot of it has some theming information baked into it. So it's not super abstract right now And there's some funky stuff going on here But basically we've got a mix in name the same thing this now I'm starting to prescribe some possible solutions, and I'll try to recap a little bit We got a mix in name the same thing as the clone it All right, I'll turn I'll come back to why this is important later And we got a bunch of rules that are nested inside of that now note most of them if not all of them are using ampersand Right. Why is that? Well, because wherever you mix it into Now these rules are going to be concatenated onto the class name that the mix in was applied to Right and though this is doing prefixing for us, right? So inside of our Our button we get to kind of write It's a little ugly with those ampersands, but we don't have to write my component dash dash We use the ampersand to kind of do that for us, right? So Let's see Here's a very simple example, right all in a few lines Nothing too fancy here. Now what is nice about this? This mix in has a public API Right, what is its public API it's these parameters that you can pass in So if you want to override my simple button You can include my sass file and you can invoke my mix in in your own Components class name and you can provide any overrides that you might want into it and Now I have created an abstraction Right and this abstraction is very important because I don't want you to write CSS rules for my component Because what if I let you do that if I let you do that then I can never refactor my component Out from underneath you ever again Because you've done the same you've created the same problem that you had with bootstrap 2 to bootstrap 3 Right you wrote a bunch of rules that were hard-coded to the assumptions that I had of my implementation strategy at the time Right with something like this. I can actually abstract myself now just like a component does right? You invoke my button component.  This is the same kind of principle for CSS as well I think functions are a minimum like the minimum requirement to create this kind of abstraction Let's take it up a notch and let's do some composition. Let's see us actually doing something interesting with these mix-ins So I have a default button type. Oops wrong file. I have a default button type that actually is pretty complicated It's a pretty a cool button I've been talking a lot at you.  So here's my buttons here They're pretty cool This is a default button and It has nice active state Right, it has nice focus ability right Here's my primary button really the only difference between my primary button and my default button is that it has a blue border with some gradient Right, so actually this is a very cool example because this is actually a gradient border Who knows how to do this in CSS a few of people I'll tell you what it ain't border colon 1px gradient. Okay? It's actually really it's actually challenging. Luckily. I have a wizard CSS wizard helping me build this shit so This actually requires Different markup to pull off properly all right now Big teaser I've actually come up with a great abstraction for how we can do that too All right, but that's out of scope for this conversation if you're interested in theming Come talk to me afterwards and I might hire you to help me so theming I think is next-level shit and Theming requires Not just assuming that you can override CSS properties to theme because theming requires sometimes different markup for implementation strategies So you need a delegation pattern for layout to do that well and if you're Clever you'll figure out the name of this project and you'll see it's wide open on GitHub. You can see what I'm doing so anyways point is though basically Primary buttons just have a like a different font color and a different border, right? So ideally I Don't have to rewrite or duplicate any of this CSS that went into the default button. I should be able to just use its mix-in and compose in CSS right well guess what I Can here it is I Got my primary. I use the mix-in of my default arguably I might I should probably have an ad import here, but I don't currently Button default here and it has parameters it has a public API It has like a background color and a color arguments and I can pass those in now the cool thing about this is that My button default knows that borders are gradients and it actually does some relative stuff Like you passed in the color, but it's gonna use Things like lighten in sass to automatically generate the gradient based off the single color you gave me Right now this is this gradient border stuff is purely a concern of the of the button default variant and It actually doesn't exist in the base class. There's actually a base class of this button, which is simple And simple doesn't know anything about fancy gradient borders. It just knows Very simple stuff. This is what a simple button looks like right now It's just like a square Right and the hope is that simple is the base class. I can compose its mix-in into default I can extend it perhaps as well and then primary can extend default and We have a reasonably robust system of composition that is akin to what we can do today already with components right so There's a little bit of code. Maybe I'll have I'm probably way over time already, so I'll try to show you some more Conventions really need to be the default. We need to help you fall into the pit of success when writing CSS You shouldn't have to be a wizard to do it. Well, it should just be the default of the framework. I Want to release a version of 1.0 of ember components CSS that fully integrates my current thinking on these things and at the minimum that will be the the bastion of sanity of CSS in the ember world but I am Excited because and part of the thing that's blocking my my work here is that we actually need to ship our New pods RFC, which Robert probably hates me calling it in that but there's a great modules RFC has anybody read seen this yet If you're an ember developer every day and you haven't seen this get on it right now because we're Completely reorganizing your app folders for you So you might want to know what it's gonna look like and tell us if you think it's a bad idea So check out this RFC It's actually and we've got an automated tool. You can go to this RFC. You can check out this rendered output It's pretty great stuff I couldn't be happier and thank you to you can all think Robert and Dan get part on the core team for championing this this effort, but We've got a I think really really great if you've used pods You probably have felt some pain around them. You're using the standard layout. You're probably feeling pain around that I think this is as good as we can get To bring the two worlds together and have a beautiful file structure for ember application Development from now on and the cool thing about it is that add-ons Engines apps are gonna all just be the same damn structure There's not gonna be any more wacky like app folder and add-ons and all that stuff We're gonna have namespacing so your add-ons don't clobber the global If you have the add-on that installs a component name the thing in your app it doesn't like have a clobbering problem apps win, but You can actually will be and it'll be able to invoke components with a namespace Prefixing them and it's gonna be great great great stuff. So check out this RFC and I'm gonna my solutions are all built with this in mind Their future thinking in that regard and there's actually a great link in here You can actually see ember my Robert wrote a migrator and this is ghosts open source admin app ember app You can actually navigate it The the thing of note here is like UI is where most of your UI code lives in now There's some folders here that are useful. These are kinds of like, you know This is akin to like the app folder today kind of except the routes has got a pods like behavior to it now It's very very cool. I really can't I can't really say anything more about it other than I love it And it's going to enable some really really awesome stuff I'm going to be I have some crazy ideas about single file components Meaning file components that everything for the component can live in one file CSS it JavaScript and markup all in one file using the JavaScript module system. I know on bonkers, but this system is actually Planned for that it actually just works seamlessly and it's heat. It's all just beautiful So please review this RFC and we'll hear Robert talk about it tomorrow at LinkedIn so I Intend on writing an RFC To ember with my viewpoints in them I Don't know when I'm gonna get I'm gonna get as many core team members on board first primarily you who done I've already been kind of like thought leading yahoo to about some of this stuff Because as like basically if you win you'll do to you're pretty much likely to win the rest of the core team over He's usually the hardest one to battle He's the ultimate bike shatter so I intend on taking these opinions To the core team at some point in the near future Via an RFC and hopefully getting these things baked into the framework now You may hate me for this if you do not like the way that I write CSS but I Think it's important that we have something and so if you don't like this stuff Please let me know and I probably I'm a few steps ahead And I know there's some faults that you might think this system has but there are actually solutions to those things as Well, particularly I'm curious how many of you already worried about the bloat of the CSS that will be emitted from the system Is anybody worried about that yet? Yes, what we're gonna build the best freaking optimizer that ever existed for CSS Because we have whole system knowledge. We know what the classes are you're actually using we could tree shake unused rules in your CSS We could do anything we want here So really It's just a matter of putting in the blood sweat and tears to make this system work and be as optimal as Possible on like the emitted CSS output, but we've already I'm already thinking about that stuff And there's a there's a plan for how we can do that. It's really just a resource problem. Like we just need Volunteers to help build this stuff because I can't do it all myself And so I think reponsive Reponsive design needs everything Responsive design actually the way we do it today. Here's another controversial thing. I think it's actually just wrong It's like really bad respond the way that we would do responsive design Flexi is actually a thing that already exists out there. This is based off of so I've been gone for like a year I started writing some of these things as Add-ons that never got released flexi is actually an extraction of my layout system that I was building and It has the responsive design concepts built in if you have not seen flexi yet. Go look at it. It's pretty cool It's not perfect But what if I told you you could have templates that were specific to the breakpoints in your application? And they automatically just rendered when that breakpoint was hit So you can actually have you can use if statements if you want to you'd say if it's mobile show this if not You can do that kind of stuff in a grand and like one big template Or you can break out the mobile view for your component as a separate template the tablet view of your component as another one They have these kind of stuff in iOS. It's called adaptive layout and they have storyboards that are specific For different platforms. This is kind of taking some of those ideas and bringing them to ember and the web And also flexi is an abstraction on top of Flexbox So I'm really interested in ups in layout as well layout's a huge problem Wouldn't it be great if you could just have a two-column layout by saying H box Box box. That's what flexi is. It's a two-column layout. It'll be 50 percent. It has a grid system check out flexi It's really cool, and it's I'm thankful that runs fired for taking some of that work and making it real so Like I said, I need your help and I'm even maybe willing to hire you to do so I have some budget for this the thing is I've done a lot of consulting at a lot of companies every Company I work for has problems these problems and I'm really fed up with it And so I'm actually like spending my own damn money to fix some of these problems And I'm getting my clients on board to to help fund this work And so if you're interested in helping, please get in touch so I Flew through that I'm sure you guys have some questions Let's fire away. How much time do we have? Three questions great. Yep the HTML bar stuff So let me let me I think I skipped over some important bits in the name of time so The optimizer so here's the big problem with this system. I'll tell you the fault with it right now And I'll tell you how we're gonna solve it when you look at the output at CSS of This system with mixins You are going to end up with a ton of duplicated CSS rules Mixins aren't doing any kind of clever optimizations currently in sass Basically every time you include a mixin every time you want to create a sub component That's gonna use its parent component styles You're gonna get a complete copy of all of the styles from the parent component and that can be cost prohibitive Right, so let's take a quick peek here. I think this stuff lives in vendor CSS So here's like my simple sass output close the console So hey, what the hell? So Let's see if I can find some duplicate styles. So here's default button So here's all the default button styles guess what? We keep going a little lower. We're gonna find primary button Here's all the same duplicated styles that are actually mostly identical With default button sass has a mechanism to solve this problem called placeholders We can be clever and I'm hoping some of the automation that Ian and I are gonna do is gonna enable some of these things to Automatically become placeholders in your mixins and then that will allow placeholders will actually are pretty cool And sass if you define rules as placeholders They will share the rules and you'll just get like comma separated selectors for everything that shares The common set of rules now this can be problematic with sass You actually need to actually the way you can do this effectively is you actually the way you do this today manually There's a great article. I should link to you basically separate the static bits and the dynamic bits as two separate placeholders And then the the static rules will get all shared across every subclass, but the dynamic bits will be unique per class I think we can automate that. I really think we can automate that stuff away So Tools are gonna be important to kind of making this succeed What else can we do well placeholders are cool and all but they're pretty manual What if we can actually just analyze the rules that are emitted and actually find all the common rules create Classes that just define those rules and if we understand we've got Ember CLI We've got this great build system We have full system knowledge about the markup and the JavaScript and the CSS We can actually look at the dependency graph of your CSS rules find all the common stuff Create hoisted we're gonna hoist the rules up to like global classes And our templates can automatically include those classes What is this thing?  There's some people. I'm sure anybody no Basically, they're kind of an interesting group of people that are saying every property combination of CSS rules should be defined as its own unique class It's kind of a little out there, but the cool thing about it is that actually It's basically just the optimization by that. I'm envisioning by hand if you can find all the common sets of rules and hoist them and Create classes for them You can even minify those classes with this optimizer by the way You could minify your CSS classes and the templates will automatically get rewritten to use the modified classes and stuff like that Anyways, I wish I had I don't have a demo of this. It would be cool to see but hopefully my description makes sense Yes, it's absolutely Yeah, I agree Sorry Yeah Yeah, so right now we're planning so there's a few different ones out there right now We're planning using Salesforce wrote a great SS SCSS parser that we're planning on using SCSS parser So this lets you just give it SCSS and it will create an ST for you that you can transform and you can analyze and basically We've got like an ember or the ability to build the mother of all ASTs We can build an AST of your CSS we can build an AST of your HTML We can build an AST of your JavaScript We can analyze the whole system and we can optimize the crap out of it for you automatically it's just gonna take effort to build that and It's valuable because we get to then write our style I mean, it's a lot of effort you might think maybe atomic CSS or functional CSS is better in the short term But ultimately we want to be able to write our CSS like we write our components Right like we write functions like we write JavaScript and that's gonna mean having concerns localized on The in the components CSS file right like you're gonna just want to be able to write the simple rules and then let the system deal with optimizing it for you Post-css has a CSS parser. There's a numerous number of CSS ones I'm basically what the controversial thing I'm thinking is basically as sass is one So we should probably just use sass by default. Sorry post CSS fans. I Like post CSS honestly, I we're gonna use it for some of this work because it's easier to transform the ASTs with post CSS than sass directly right now, but sass is I think kind of the winner although I Would like to write my own CSS preprocessor on top of glimmer too, but I don't that's a whole nother level of crazy So anyways Yeah, so one last question and then I'll leave you alone up. No no more questions. Anybody have one pressing all right We can talk afterwards so I Hope I was not so ridiculously over time Thanks everyone for listening to me ramble about this stuff. Hopefully I've piqued your interest You're gonna see me giving more talks about this. I'm gonna keep these talks are gonna get recorded I'm gonna keep honing my message and hopefully You'll make sense out of all this stuff that I've been saying and it will make sense to you And you'll want to use it and maybe you'll even want to help me build this stuff because I think it's really important for the future of web development, so thank you very much