California, Tabor Alberta, Vancouver, Victoria, Halifax, Toronto, Montreal, New York, Arkansas, Alabama, Florida, Texas, Oklahoma, California again, Washington State, Colorado again, Minnesota and Virginia, Mayhem in other communities. So my publisher said, would you write a book on bullying? I said no, I don't like to write. I do not like to write. Like Andrew Solomon loves to write. God bless him. I love what Gloria Steinem says. I don't like to write. I love to have written. It's over. I mean they make you finish sentences. They tell you what you can end a sentence with and only you English majors will get that one and they make you finish one story before you go on to another none of which I will do today in either of the two sessions. So I said no. He asked me again. I said no. He asked me a third time. I said yes. But in between the second and third, our youngest who was 24 at that point, graduated from university, graphic illustrator, he said mom, maybe if you write it other kids won't go through what I went through in school. Our youngest had been targeted kindergarten through grade four. We handled it poorly. School handled it worse. Now he started school small. Hey, his dad's five four if he fluffed his hair up. We're not talking a lot of height potential here. That curly hair, big eyes, artist, musician, and a loud mouth, which many didn't endear himself to teachers, which actually puts you at a higher risk for being targeted. Now he was out on the playground in the sandbox alone. He's a very social creature, but you give that kid a sandbox. He could spend hours building in it.  Now his middle sister ran to the teacher and the teacher said, Maria, we don't tattle here. Maria was devastated because from age four on, we had taught our kids the difference between telling and tattling, reporting and ratting. We're going to talk a bit about language today because telling is not tattling, reporting is not ratting, conflict is not bullying, teasing is not taunting, flirting is not sexual bullying. Children's matter. And with telling is not tattling, I used a very simple solution. If it's going to get somebody in trouble, don't tell me. If it's going to get somebody out of trouble, tell me. If it's ever both, I need to know. And if you can't figure it out, tell me, we'll figure it out together. Five-year-olds get that. You know those self-appointed playground monitors? Mississippi, Mississippi! Johnny's on the swing. He's not supposed to be on the swing. He didn't share yesterday's sea. That's tattling. All that's going to do is get a kid in trouble. But if it's okay for Johnny to be on the swing, he leaps off the swing. His coat gets caught. He's hanging on the swing. Tell me. That's going to get him out of trouble. Now if he's not supposed to be on the swing and he's hanging on the swing, it's both I need to know. Five-year-olds get that. I've had little ones come up. Mississippi, Mississippi! I say, in, out, or both. And sometimes they go, hmm. I say, thank you for discerning that. I've also had little ones come up and say, Mississippi, Mississippi! I say, in, out, or both. And they go, I don't know. I can't discern it. I say, well, tell me. We'll figure it out together. You say, can we use big words like discerning with five-year-olds? Oh, most three-year-olds can tell you snuffalopagus. It used to be an invisible friend of big birds telling you in two languages. Most four-year-olds can say, to infinity and beyond, which is an interesting concept if you think about it. And most five-year-olds can give you every Pokemon character and every dinosaur by its full scientific name and we worry about the CERN. And while we're on that sex, this is what drives the editors crazy, but it fits. The majority of bullying that goes on in middle school, high school, university, and the workplace is sexual in nature. The second is racial or ethnic, but the first is sexual, but wait a minute. How many of you are raising or work with little boys of color? They get a double whammy.  And they're combined. Why did Emmett Till get murdered? What did he do supposedly? He whistled at a white woman. And those of you working with young black boys have got to know that what people perceive in them as a threat, Emmett Till. You have to know that they get a double whammy. And we have to be aware of that double whammy. We have to call attention to the fact. Now all of us are biased. Anybody who says they're not, I dare say, has never been tested. I happen to be biased toward short, dark Italian men. I married one. We have to recognize our biases. But back to sex, amazing what we do with little ones.  Book of slang, 101 different words for penis, 125 for breast, one for ankle. Now isn't that interesting? You see if it has to do with sexuality, we have to hang up with it. Just for fun. It doesn't have to be your own home. It can be rumor.  Little man, pee pee, Johnson and the twins, sticks and berries, family jewels, packaged, junk, Lincoln locks, always get new ones. Amazing.    We have to start young with teaching kids to have a healthy regard for themselves including their sexuality and a healthy regard for others including their sexuality. We have this strange idea that if we talk to them about it and they've seen it on TV and you've read all those wonderful books that are out there now, they get it. Not always true. Roy Bonestiel, a famous Canadian, talked about two little boys walking along and they find a $5 bill.  The other boy said, no, no, no, let's go get some tampaks. The other boy said, tampaks? He said, yes, with tampaks we can go swimming and hiking and horseback riding. Now, you will never look at those commercials in the same light again. We need a little levity for this heavy topic here. Back to telling and tattling, Santee, California, how I wish Andy Williams friends had been able to discern the difference between telling and tattling. Andy, his brother said, had been targeted from kindergarten through grade 11. You know, that's a lot of years showing up every single day, being targeted, being treated with horrible taunts. In grade school, he was called anorexic candy. He was very thin. He had his ears pulled till they bled, just like Michael Phelps had, the great swimmer. In high school, they did what was known as swirling. That's where your urinating the toilet sticky kids had in it. They videotaped humiliating him. They broke his skateboard in front of him and one day at a friend's house, he said, I'm going to get those boys tomorrow. Now, a man in that house overheard that and said, I don't want to hear you talking like that. I'm going to have to call the police. You see, this was shortly after the shootings at Columbine when everybody was on high alert, but Andy said, I was just kidding. I was just kidding. You know what? His friends knew better. They went home and told their parents. And one parent said, I want to hear you talking like that. Another parent said, I don't want to hang around with a kid or dog like that. And another said, Andy wouldn't do anything. He's a good boy. But you know, those boys were still so concerned. They patted down his backpack the next day, but they missed the gun. Andy killed two people that day and injured 13.  The principal, after the fact, called those boys and said, why on earth?   Might have been able to be stopped. All three of them said because he would have been in trouble. Yeah, he would have, but he'd be out of heap a lot of other trouble and two people would be alive. We've got to talk to our young people about telling is not tattling. Reporting is not ready. So Maria comes home. She's so upset about what's happened to her brother and just being accused of tattling. But we have to drag it out of Joe. Because kids don't want to tell you they've been targeted, even at a young age. Now, all of you on your flash drives have a copy of the handout and you will see some of Joe's doodles. And on the first horizontal page, what you will see are six characters. I said, Joe, Joe, draw me a boy bully and a girl bully. And he has two girls doing this to another girl. Very quickly picked up on how girls will use shunning, rumor, gossip and exclusion to exclude another girl. But I said, Joe, isn't that rather stereotypical of a boy bully? He said, no, ma, that's the kid who targeted me in grade school. Looks just like him. I would love to send his mother a copy of the book. Say, you recognize anybody in here? But there was also a third character with both the girls and the boys.  But who's the third character, Joe? He said, oh, ma, there were always kids who joined in, cheered the bully on, turned a blind's eye, or were afraid to step in. That's where the title comes from. The bully, the bullied, and the not so innocent bystander. If you go directly across from that, you will see the seven most common reasons kids don't want to tell you. They've been targeted. One, they're ashamed. Most targeted kids are caring, sensitive human beings who would never do that to another human being. So they can't figure out why this is being done to them. They haven't done anything. But we feed into that by saying, well, what did you do? Nothing justifies me. Nothing. But they attack their race, or their religion, or their gender, or their physical or mental ability, their parents' economic status. Things they can't change. And it cuts to the quick of them. They're also afraid of retaliation. Because bully's threatened. You tell anybody, it's over for you. A teacher in high school can walk down the hallway, see a boy being targeted. But when he gets up there and says, what's going on here? Even the targeted boy will say, nothing. Because he knows if he says, right then, when you're gone. Since bullying happens mostly under the radar of adults, he'll be in a heap of a lot of trouble. Nothing. They also don't believe anyone can help them. Because we have this notion that if we don't see it, we're not dealing with it. Well, as I said, bullying happens under the radar of adults. You probably won't see it at first. And if we have this idea that if we don't see it, we're not dealing with it, right off dealing with bullying, they also don't believe anyone will help them. Because when they reported it just like we told them to, we say interesting things to them. Like walk down another hallway, find another place to eat if you don't like what's going on in the lunch room. Avoid the bully. I can't tell you how many times I have seen that in anti-bullying programs. Why is it up to the targeted kid to find a new path to school? Besides, the bully's gonna find them again and then they've lost. They didn't do what they were supposed to do. They're supposed to stay away from him. Why does that young girl being targeted at the lockers have to leave English class early so she can get safely to math? Why aren't those three girls who are targeting her under escort? Why does that kid with special needs have to sit in the front of the bus? Why aren't the bullies in the front of the bus? But we say avoid. Another one, ignore. Now, there are six scenes in this horrible tragedy. By the third scene, bullies don't have to work on your kid. They're beating themselves up. I am dumb.  I am no good. So when you say ignore, lack off-road of book, don't think of the elephant. What'd you just think of? The elephant. When you say to ignore, it eats at the child every time it happens because it's impossible to ignore those taunts online and offline. They've also bought into the lion's part of growing up because we taught them that lie. Oh, boys would be boys. Girls just want to be mean. It's part of growing up. It's girl drama. And they've learned that ratting on their peers is not cool. So when I finally got it out of Joe, what happened, I went to the teacher and she said, you know, if Joe didn't do this and this and this, maybe they wouldn't target him. Oh, let's retarget the target. We're making that same mistake some 20 odd years later. I had a young girl come up to me with flaming red hair, gorgeous red hair. She said, it wasn't until I read the book that I realized it was not my fault in grade nine that those girls held me down and set fire to my hair. They hair sprayed her hair and ignited it. Counselors, teachers and parents said, what on earth did you do to make them that angry at you? First of all, they weren't angry at her. They were laughing at her. Bullying is about getting pleasure from somebody else's pain. You know who they were mad at? The young girl who took her jacket off to put the flames out, she spoiled their fun. But one of the biggest mistakes we make is we fail to discern the difference between normal, natural and necessary conflict and bullying. Bullying is neither normal, natural or necessary. It is a learned behavior. You have to be taught to be mean. You know that song from South Pacific that ought to date me.  Bullying is a learned behavior. Liz Losher from the Conflict Center said it so beautifully about conflict. Conflict is inevitable, violence is not.  We must teach young people how to handle their conflicts non-violently, but that has nothing to do with bullying. Two kids fighting over a TV program. How many of you have more than one kid? Then you know what sibling rivalry is. Kids fight.  Children who do not fight go up to make lousy spouses. If any of you are married to somebody who won't enter into conflict, you know what I'm talking about, keep the peace, don't bring it up, let it go. No, two kids fighting over a TV program. Now there are three kinds of families. Brickwall, jellyfish, and backbone. Brickwall, stop it, stop it, stop it, turn that set off, nobody's watching it. Now some of you know those lines. And if you ever see this, it's brickwall. And if it happens to be you doing this, what I suggest you do is this. It does two things.  And by the way, check out which parent taught you to do it. They're probably still doing it. I told you not to marry him. Jellyfish, oh kids, please. Your brothers and sisters, you're supposed to love one another. Don't do this to me. Some of you will recognize this one. It's Lent. Whoa, more of you did than I thought. Those of you of other faith traditions have no clue what I just did there. Or stop it, stop it, stop it, here's a TV for you, here's a TV for you, no conflict. Jellyfish families are often into me, mine, and more instead of us, ours, and enough. Kids never have to learn to share. And they certainly wouldn't know what to do with a party line. Some of you younger people wouldn't either. When I grew up, we had to share a phone line with seven families. And we didn't need the internet to spread rumors. We had an operator who knew everybody's business, right? But that's jellyfish.  And we need to be flexible. As anyone working with parents or those of us working with young people, we have to be flexible. But it also gives us an environment that's conducive to creative, constructive, and responsible activity you don't get from a jellyfish model. And we need both, flexibility and an environment that invites creative, constructive, and responsible activity. That's the backbone. Two kids fighting over a TV program, backbone parent, the slower you walk, the quieter you are, the better your chances of it being over before you get there. You will not have to deal with it. But if it's still going on, you gently model for them. Gently turn the set off, take the remote, and say you're both fighting. You may both turn back on as soon as you both have a plan. Now what do I need? A plan. They never say it nicely, oh dad, we need a plan. So don't count on it. But one or three things will happen. They'll share. They'll both get up and leave it. Or one of them will come over the plan they both can live with. As long as the one who came up with it doesn't use brute force or intimidation.  These are lifelong skills using the stuff of everyday life. But if one says, I'm gonna beat you over the head, you say that's not a good plan, not a good plan. You see, there's a reason as wise and caring adults we're hanging with children, they're gonna grow up. We have to be there to help raise them lest we get Lord of the Flies. And so we have to say, no, no, no, not a good plan. Come up with another one, I know you can. And if one says, you let me watch this program today, you can have two tomorrow, now you and the older kid know tomorrow, Sunday, nothing's on, don't say a word. This is not the teachable moment. It comes the next day when that little one goes, there's nothing on! Now he's ready to learn. But I'll guarantee if you interfere, and by the way it is interfere, it's the day before and say to the older one, that's not fair, he can write and he say, you're always rescuing him. Now I'm a special ed teacher. My degrees are in LD, ED and MR, the old acronyms. I used to say I was the emotionally disturbed teacher, I meant that more ways than one on some days. But we're notorious for rescuing kids rather than empowering them. Now I look at that little one, I say, you know, you let them experience the consequences for choices they made. It is not, I always say, it's life-threatening, morally-threatening and healthy, you intervene. I mean, you don't say to a 16 year old, go ahead and jump off the building. We'll discuss the consequences after you land.  But the rest of the time, I like to give them the opportunity to accept the consequences for choices they made. And it is not life-threatening to figure out you made a lousy choice about a TV program. But I look and I say, I notice you're giving in to your big brother a lot. Would you like to learn a few good lines? And you teach that kid the lines, like I'm willing to let you watch this program today if I can have this one on Monday, this one on Tuesday and I want it in writing. You teach that little one, do that, nobody's gonna walk all over him. But that's not bullying. That's normal, natural and necessary conflict. But the 10 year old has a five year old's arm up the back and we're not talking a yoga pose here. Kids in serious pain screaming at the top of his lungs.  And we say, what are you screaming like that for? And the way your daughter looks at your son, because remember bullying happens under the radar of adults. He knows if he says anything right now, he's gonna be in a heap of trouble when you're not around.  Well quit screaming like that. We have just retargeted the target. Let's step back a moment. When you walked in there, you saw something you wished you hadn't seen. You saw your daughter smile before she saw you. That's bullying. Bullying is a conscious, willful, deliberate hostile activity intended to harm where you get pleasure from somebody else's pain. It's about mean and cruel. It's about utter contempt for another human being. It's not about a conflict. It's getting pleasure. If someone would come up to me and say, we were just teasing her and they have a smirk on their face, I would say, no, you were taunting her. Big difference. Teasing is what friends do. Taunting is what bullies do. And on your handout, you will see a column on teasing and taunting and flirting and sexual bullying. Because the checklists are similar. But we teach little ones the difference. And by fourth grade, you can start teaching kids that just like you know the difference between teasing and taunting, you'll know the difference between flirting and sexual bullying. Anybody here sitting next to a good friend? I'll close my eyes a moment. You can figure out if you're sitting next to a good friend. Anybody? Now come on, I need to see two hands. I'm not bullying anybody into being a good friend. You know? Okay, we got two friends here. Your name? Sonia and your name? Chris said, do you ever tease one another? Yeah, teasing's fun, it's healthy, it helps cement relationships. But watch this, teasing, you can tease her, she can tease you, it's mutual.  It's a world of difference. You might be better at verbal and you're better at getting birthday candles that don't blow out. But you're both laughing about it as you're huffing away at those candles. I get birthday candles that explode in your face, ruin your makeup, take a picture of it and post it. That's taunting. In teasing, it's lighthearted, clever and benign. In taunting, it's bigoted comments thinly disguised as jokes. In teasing, it's innocent and motive. In taunting, it's sinister and motive. In teasing, it's laughing with and taunting, it's laughing at. In teasing, have you ever said something to a dear friend, wrong time, wrong place, didn't quite come out the way you wanted it to? What do you do as soon as you notice that they're sad or that they're uncomfortable? You stop, right? And you'll apologize all over the place. Now if you used humor a lot, you'll put your foot further in, mouth. And then they'll have to help you get it out. But typically you stop. But in bullying, what does a bully do when they notice the other person's in distress? Keep going. Now, if you believe that to be true, why on earth then, as in some anti-bullying programs, would you ever tell a targeted kid, just say to the bully, please stop, that hurts? Think about it. This is not gonna work. With a friend, you'd right away, stop. You've made a mistake. You read their body language. In taunting, they read the body language too. And go deeper. We gotta be able to discern that difference. You see, bullying is a learned behavior. So I ask you, how do you treat hired help? How do you treat the person going through the grocery store a little slower than you'd like them to? How do you treat that new neighbor, who looks different than you? Has a different skin color, different languages, their first language. Dresses differently, eats different foods. Your children are watching. And how about that bigoted relative at the family gathering? Excuse me. Now, we all have bigoted relatives somewhere in the family tree. Some just aren't on the branches yet. They're right there at the dinner table, spewing bigoted comments, thinly disguised as jokes. Can your children hear you saying, I'm bothered by that?  When all the other relatives roll their eyes and say, what can't you take a joke? Not that kind.   Old is never excuse for bigotry and intolerance.  That those kind of bigoted statements under the guise of a joke are not a joke. They're mean and cruel. Now, when your children see you doing that and being in an uncomfortable situation, they are more likely to stand up for that young girl or step in for that young boy. Because you've done it. We have to walk our talk and talk our walk. Now there are four ways and three means of bullying. The first, I have been fighting since 2001 to get many state and provincial laws in other countries changed to include this, a one-time event. Many state laws have had must be continuous and repeated over time. Yours included. It's very easy to turn that around and say is often continuous and repeated over time. But it can be a one-time event. What's the toilet counts? What's called a slut matters? What's locked out a chant room is mean and cruel. So it can be a one-time event. The second is the most common, continuous and repeated over time. The third is hazing. Ritualized initiation intended to denigrate or humiliate before a person can get into a group. Now we often have in our athletics, because the National Athletics Association's tend to have it, an anti-hazing policy. But we have to have that in our youth groups. We have to have it in our schools. It was a drum major in Florida that was hazed to death on a bus. And a few weeks later, four kids were arrested for hazing the drum major. And I thought, oh, they got them. No, they were hazing the new drum major. The other one's dead. But this is what we do. This is norm, it's not normal. Alfred University, after four kids died in fraternity hazings, did a research study on hazing. And they went into the high schools to see where the roots of this was. They had to go into middle school to really find it. And they found there were four groups where we have to address hazing. First is Boys and Girls Athletics. And that's when we think of first. Second was church groups, which may or may not talk you. The third is groups in the school, different clubs, drama, chess. Yes, you can haze people in chess. Band, choir, school groups, and clubs outside the school. All of us have to address hazing. The fourth is the one that Jose is working on a bill. And it's called David's Law to address cyber, digital, or technology assisted bullying. It's called by all three of those today. Our online and offline worlds have merged into the real world for our young people. It's no longer here's the real world and that's the online world. They are merged to become their real world. And rarely is a kid only targeted online. They're targeted offline and online, 24 seven. And we have to deal with that. We have to teach kids to do three things. To be digitally savvy, digitally civil, and digitally safe.  You and I are digital immigrants. We got off the boat. We don't know the language. We don't know the towns. We don't know the words. And we're trying to learn.  You were digital natives. You could even lie to us and we wouldn't know. You're translating for us. You're trying to help us out. Now how many of you work with or have children 12 and under? They are digital masters. Because now there are cell phones. And some of those kids were introduced to digital media in the birthing room. When the nurse is cleaning the baby. Ah, I'm sending out pictures on Facebook. Dad is Twittering, Instagramming. They are masters. But they still need to learn from us to be digitally civil, digitally savvy, and digitally safe. We've gotta teach them. My daughter, my middle daughter came up to me and said, mom, why did you give Chance, who was four at the time, normal four year old? No, super intelligent kid, normal four year old. Why did you give him your password to your iPhone? I said, Maria, I didn't. I said, Chance, how did you get my cell phone password? I watched you, grandma. Do you know how they tell you to cover your ATM? When you're putting in the code, they forgot to tell grandparents, you gotta cover your iPhone. They are masters at these things. But we have to teach them. And my neighbor got a Kindle fire and was letting her grandson use it. Five years old. She got a $350 bill for all of the apps he downloaded. All the games. And you know, those companies really don't care that it was a five year old doing it. He just, he didn't wanna play them. He just liked watching it go around Dallow. He said, what am I gonna do? You put parental locks on it? Yeah, you and I have to get savvy about these tools. Now on the handout, I have some websites, and I'll just give them to you very briefly, but it's on your little flash drive. One of them is netlingo.com. So you understand the lingo? POS, what does it mean? You're right. It used to mean, yeah. But it used to mean parent over shoulder and before that point of sale. But it doesn't anymore. And R-U-I-T-D, R-U-I-T-D, are you in the dark? Yeah, most of us are. But we have to have those tools. Netlingo will help you out, netlingo.com. Another one is commonsensemedia.org. It's phenomenal. You join it, it's free. And they have worked by hiring experts from preschool through high school in those three areas, they call them something a little different, but they've developed handouts for you on how to keep your kids savvy, civil, and safe. And gives you up to date on the latest movies, the latest apps. How many of you have a child with a cell phone right now? How many calculators do they have on their cell phone? Do you know? If they have more than one and they're not a math wizard, worry. Push the little red plus sign and it'll open up all the apps they're trying to hide from you. Oh darn. They've gotten wise to that. So now they have other sleeves they can do it. It's called a sleeve. We've got to be digitally savvy. And commonsensemedia can help you out there.   Digitally savvy, we gotta get it too. Digitally civil, when my kids were growing up the computer was in the family room. And I used an old Sufi saying, Sufis are people of wisdom in the Muslim tradition, that our words must pass through three gates. And then I added to update it before you push send. The three gates, is it true? Not kind of true, maybe true, half true rumor, but is it true? If it's not true, don't even go on to the next gates, put it back. If it is true, you still gotta go the next gate. Is it necessary to say? Many of you in human services have information that others would love to know about, but it's not necessary for them to know it. And I wanna talk to kids about not everything you know needs to be out there. Is it true, is it necessary? And the last gate is the most difficult gate. Is it kind? Is it true, is it necessary, is it kind? We have to give kids that tool, that backbone to flesh out their own answers in their own settings. But we gotta give them the tools. And then safety, Periaftab, a lawyer from New Jersey, has developed a site called stopbullying.org. No, stopcyberbullying.org. And it will help you in the area of safety and help your young preteens through high school figure out what to do with their passwords, who not to share with, even if you're madly in love with that person, don't share your password with them. And they're good friends. They could hack. So don't. But she will teach you how to keep your kids safe. And then, andrevengeporn.com. Hopefully you'll never have to use that website. But we have young people today playing games here in Texas to see how many text messages it takes to their girlfriend or boyfriend to get them undressed.  And they didn't think they ever would share it with anybody. That's revenge porn. And our kids have to be careful. Now we had a situation in Canyon City, just recently where 150 kids had shared consensually. So that's a little bit different, but not according to the law. In our state as it existed. They had shared over 300 pictures of their boyfriends and girlfriends in all stages of dress and undress. Now what do you do with 150 kids? Under our present state law, it would have been they were sexual deviants and they'd have to be on the sex list the rest of their lives. So we had to change our state law. And you may have to look at yours as well. Because no one was coerced. But all of them had to do a restorative practice as restitution, resolution and reconciliation. And they all have to keep it clean through 18. But it was a wake up call for the community. But if you've ever been subjected or any of your young people have been subjected to revenge porn, if you go to that website, there's an 800 number there that you can call and it goes to a law firm in Seattle.  They will help scrub it and do all the legal information that's necessary and the legal action pro bono. So hopefully you'll never need it but you need to be aware of it. And then one of my favorite websites is the Red Hood Project. How many of you know who Rafi is? The singer, Baluga the Whale? Rafi started a project after Amanda Todd killed herself in Vancouver and Perry is on the Facebook board and she's pushing for cyber civility and safety and knowing how to save, knowing how to use the tools from the end of educators, parents and kids. Rafi is adding the extra leg to that and saying we must get Facebook and Instagram and Twitter and Google to help us help keep our kids safe. And I belong to their group and we are pushing for legislation and we're pushing those groups because they've got the resources and they've got the talent that they can help keep our young people safe because Amanda Todd was targeted by a man from the Netherlands, a 32 year old predator who posed as a 15 year old and got her to expose her breasts and then threatened her with blackmail if she did not expose more what she refused to do so he sent her picture all over her school and the impact of that was horrific but worse than that she said was what her peers did to her.  Spread ugly rumors about her that had no merit and no grounds. Her parents, one of them a school teacher moved her to another school and within days through Facebook that man had connected to her school there, her classmates and sent that picture around and she killed herself. So we have to be aware, it's not easy. You've lost kids in this community who have been relentlessly targeted online and offline. They said, well, just tell them not to use it. Oh, it's part of the real world. So we have to help our kids. So there are four ways at one time, continuous and repeated, hazing and cyber, digital or technology enhanced. There are three means to do that, verbal, physical and relational. Verbal is the most common. You know that adage sticks and stones may break my bones or words will never hurt me, it's a lie. Ask Donmarie Wesley's mom. Donmarie hung herself with her dog's leash at 14, left a suicide note naming the three girls who had only verbally tormented her every single day in middle school, a vulnerable time in kids' lives. The two tools they used, cell phones and the internet. The last thing Donmarie Wesley heard before she hung herself was one of those girls saying we'd all be better off if you were dead by morning she was. Verbal bullying can be horrific in and of itself or an entree to the other two or combined with the other two. But in and of itself it's horrible. It's step one in the dehumanization of another human being. And I work in Rwanda with orphans from the 1994 genocide. We're in 100 days almost a million human beings macheteed. We're macheteed to death by people who would deem them less than human. Anybody here Jewish?  They killed vermin and bacteria eating at the fabric of our society. What do you do with vermin? You exterminate it. In Rwanda they were cockroaches, not tootsies. In Armenians were dogs, Cambodians were worms. We cannot tolerate the dehumanization of another human being through words. And we've got a tough road to hoe here in our political toxic political climate right now that our young people are going to school. Some of them are terrorized. Some of them are afraid to death. Some of them are carrying their birth certificates with them and others are emboldened. So we've got to be aware of the power of a word. And we have to say in our schools and our programs, no more, not here, never. That was mean, that was cruel, and this is safe harbor for every child. And we have to be willing to speak it. Now in Indiana there was a basketball game and one team was playing against another town of mostly Latinos. And the people in the stands build the wall, and calling them horrific ethnic slurs. The coach to his credit stopped it.  But do you know what? The backlash after that against the coach was amazing. It was the adults who were supporting kids saying it's a freedom of speech. Oh my, unless you think it can happen, my own former state representative, who will go unnamed by the way, but I live in Jefferson County, Colorado, was quoted in our local paper talking about undocumented workers. He said, illegals are vermin and bacteria eating at the fabric of our society. The premise of my genocide book is it's a short walk from schoolyard bullying to hate crimes, to crimes against humanity. And we are seeing a rise in our country and we need to deal with that. But we need to deal with our young people. We have to say no more, not here, never. Even though parents are gonna give you grief, are you willing to stand up for values and against injustices? We gotta walk our talk and talk our walk. So verbal bullying alone can pack a tremendous wallop. Be an entree to the other two or combine with the other two for an even greater wallop. Physical bullying's the least amount done. Boys fight a lot, but that's not bullying. They threaten, but that's verbal. And an even smaller number of girls resort to physical bullying, although that's on the rise today, but they don't have to. They have in their social arsenal something far more powerful, relational or social bullying, shunning, rumor, gossip, and exclusion. And it's high time that we saw that for the deadliness that it truly is. Dan Alveas has developed, he's one of the leaders in anti-bullying. He did research over 30 years ago in Norway and Sweden. And he allowed me to adapt his bully circle. I adapted it to fit more in line with Sebastian Hafner's defying Hitler, a trap of comradeship. We know collectively we will often do things we would never do individually. And in the center is the target. And that target can be anyone.  You can be targeted because you have an allergy. You can be targeted because you're new. The one thing all targeted kids have in common, somebody targeted them. At the very top of the circle, you have bullies. They can play three roles, instigator, planner, or perpetrator. You can have a girl who says, you know what I heard about that girl? Wouldn't that be cool to put it up on the web? But she didn't do it. And the other girls all get in trouble, but she was only the instigator. It's part of the problem.  Planner, that's that small boy who wants to beat up a smaller boy, but he gets his henchmen to do it instead. He plans it, he's part of the problem. And then you get the kid who does all three. You can't tell bullies by how they look. It's how they act. These are only roles kids are playing. Right below the bully, we have the bullies, henchmen. Now you didn't raise that kid to be a bully, but you raised her to do to please. I'll talk about this and then the kids are worth it. The wrap up keynote today. I don't want praise dependent, reward dependent kids. Because when a young high status social bully says, you want to be in my group, don't eat lunch with her, that's a reward. And she will do things that she would have never done except for its reward, but she's been raised to be reward dependent. We got to look at bribes and threats, rewards and punishments, and look at how they interfere with ethical behavior. I want a kid to do it when it's the right thing to do, even if it costs them. But the henchmen, how do you know you caught the henchmen? Often by how the parents behave. When you catch a henchmen, what you'll typically hear is, oh my goodness, I can't believe my kid did that. He's a good kid. He's never done anything like that. He's always done whatever he's been told to do. Exactly. How do you know you caught the bully? It tends to run in the family. And what you'll hear is, my daughter wouldn't do that. What proof do you have? Besides, that's the way kids behave. And that other girl's probably asking for it. Then you know you caught the bully. But right below is the henchmen. Right below them is the active supporters. They whip out their cell phones, video it, and put it on YouTube. And then you have the passive supporters. You won't know her unless you're driving home from Carpool in Carpool and you overhear your daughter laughing in the back seat with her friends because they downloaded that video. Said, look at what they did to them. But I didn't do it. You're part of the problem, kid. The very bottom of the circle is the disengaged onlooker. Which can be you and me who turn a blind side. Say, ah, boys will be boys. Girls just want to be mean. It's girl drama. On the upswing is the potential witness. That's a kid you did raise to act with integrity and civility and compassion. But they're afraid of the bully. They're afraid if they step in, they'll be next. They're afraid if they step in, they'll only make it worse for the target. Or they're just simply afraid. And at the very top is the antithesis of the bully, the brave hearted kid. And the next session, I will talk about how do you raise a kid? Who knows how to treat others with dignity and regard. Who knows how to make their own decisions because they've been allowed to make choices and decisions and mistakes and been held accountable for them. That brave hearted witness, resister, and defender.  Well, the henchman puts her backpack down. The other girl videos it. The other girl downloads it. The other girl sits there, eats her lunch. Another girl's going, oh, that's awful. But one girl goes sits next to the new girl. And the interesting thing is as that bully trap there can catch those kids, one kid standing up can make a world of difference. There was a young girl in Montrose, Colorado, Kate, who killed herself after being horrifically tormented by her peers. And her parents started a foundation call before you hate, think Kate. And they had training in their schools for kids on how to stand up and speak out. And this year at the beginning of the school year, a kid targeted another kid online. And it didn't happen like it did with Kate. Kids didn't join in with this kid. In fact, those kids joined to support the kid who was targeted.  But others supported that one kid who had targeted, been targeted. And you know what that boy said? I didn't wanna go back to school, but now I do, because I know there are people that will back me up. We got a teacher, a young people, how to do that. But it took one to begin and then others joined in. So we have to break this cycle of violence. Now, there are three apparent psychological advantages that if these exist in your homeschool or community, you have fertile soil for bullying. Sense of entitlement, liberty to exclude and intolerance to our differences. Is there any one group that feels more entitled than any other group in your school? You have fertile soil for bullying. It can be economic status, it can be the position your parents hold, it can be the color of your skin, the language you speak as your first language, your economic status, where you live. But if that's there, you gotta work on that. Clicks, where you exclude others. The more clubs you have and the more programs you have for kids to feel welcome, the less likely you are to have cliques. That's why I think the arts are so important. I marvel. We put all our money into anti-bullying, we get rid of the arts. When there are some of the most powerful anti-bullying tools we've got around. Art, my old arts teacher, sister Tomasita, world renowned for her sculptures and her paintings, said children who create do not destroy. Getting our kids to be creative with one another we gotta make sure, in order to play a musical instrument, that little kid who's been beaten down, shows up in band, has to roll his shoulders around it down and stand strong, not tall, that's a bias against short people. But stand strong, the language we use matters. And breathe deep, which is an assertive posture. The kid throwing pottery has to be an assertive posture. The person singing. Martin Buber said, I am I and you are thou and we have a common humanity, that's the we. In bullying I make you into an it. And once you're in it to me, I can do anything to you and not feel any shame or compassion. I can take a Matthew Shepard beat him up, time to a fence post leaving to die and learn me Wyoming. And when those young boys were arrested, they said, yeah, but he was gay.  And when he was dead, those three young men said, yeah, but he was black. Renee Burke, 15 years old, 100 kids knew about her death before her parents and the police. 25 of her normal classmates cheered those girls on as they broke her arms before they drowned her.  Another said, oh, it couldn't stand the sound of her voice. And another was complicit, said, I was only doing what they told me to do. You see, we have to be willing to break this horrific cycle of violence. Archbishop Desmond Tutu said, we are interrelated, interconnected and interdependent. We're in this together. We've got to be willing to see the uniqueness of each person.  Once you're in it, you're outside that circle of care. And we cannot ever make any other human being an it. And the eye and the thou create the we, our community. So we've got to work on that. And the last is an intolerance toward differences. Now I'm not asking kids to be tolerant. That's not the opposite of intolerant. The opposite of intolerance is deep caring. The must to relieve somebody else's suffering and wishing them well. Bullying is getting pleasure from somebody else's pain. Now, how many of you have an adolescent of your own? I bet some of you don't like your teenager right now. You do not like them. You say, oh, no, no, no, politically correct. I don't like his behavior. No, you don't like them. You don't even want to go home tonight. But you love them deeply. And if they were in trouble, you'd get there as fast as you could. Put your arm around and say, we love you. You're in trouble. We know you can handle it. Brought a list of lawyers. We think might take your case. Good luck, buddy. But you'd be there. You'd be there for them. That's the deep caring. I tell kids, you don't have to like every kid in this classroom, but you must honor their humanity. Now, what do you do if a kid's targeted? And what don't you do? I made some of these mistakes myself. Don't minimize, rationalize, or explain it away. All boys would be boys, girls would want to be mean. Oh, I know she didn't mean it. She was just teasing. No, she was taunting. Don't minimize, rationalize, explain away. Don't rush in to solve it. Oh, you want to. You want to ring that bully's neck and he bites down on you. Don't let it happen. And then kids will quit telling you. Don't tell the kid to fight back. It's not a fight. Defend yourself, absolutely. But bullies are cowards. They're not ignorant. They picked on somebody they know they could get. So we got to teach kids that there are things you can do, but it's not fighting back. Don't tell them to avoid or ignore. We've talked about that. And don't confront the bully or the bully's parents alone. It tends to run in the family. Make sure there's at least two of you doing it.  Now what do you do? For any child who's been targeted, you have to say to them, I hear you. I'm here for you. I believe you. You're not in this alone.  We have to be there. Their little bodies are speaking pain. Read their bodies when the words are coming out. They come home from school. Say, how was your day? This is not fine. Talk to me, son. Tell me, daughter, what's going on? I hear you. I'm here for you. I believe you. You're not in this alone. The next thing you want to say, it's not your fault. The problem belongs to the other kid. See, I didn't call a kid a victim. It's target. Gavin DeBecker taught me that term.  The problem's with them. Now, you may have a child who's weird, dorky, odd, strange, ADHD, Osburgers, Mrs. Social Queues. But nothing justifies me. Do we work on those other issues? Absolutely. But nothing justifies me. It's their fault, not yours. The next thing I say is there are things you can do, and that's a whole lecture unto itself. But since verbal bullying is the most common, we gotta teach them to roll their shoulders around and down and stand strong and not be passive. Please stop. That hurts. Not be aggressive. Not to no one but to be assertive. Like, that was mean, that was cruel, that was bigoted, that was racist, I don't need this, I'm outta here. And for those of you working with older kids or at your next family gathering, that comment was beneath both of us. What it's saying is I'm not getting in the mud with you, and I'm inviting you to be bigger than you're being right now. We gotta give them the lines. But what about a kid who can't get the words out when they're under attack? You teach them to do self-talk. And we have programs where you go, stop, you never tell a bully what to do. But that is an evolutionary survival tool for humans. And when you have them put their hand up, they're protecting themselves, which is empowering to them. And when they do that, their hand, if those of you in yoga know what I just did, I went into a strong core posture, they're ready to turn their feet and start walking the other way and self-talk. I'm a decent caring human being. She's sure getting her needs met in a lousy way. That keeps a child from succumbing to the bullying. Then the last thing, there must be somebody safe to tell. And you may indeed be that person. They need to know they can come to you and they will be heard, and that you will give them tools, and that you will deal effectively with the kid who was targeting them. And how do you do that? How do you reform a bully? Basically, you hold them accountable. Restitution, resolution, reconciliation. Own and fix what you did. Figure out how you're gonna keep it from happening again and don't just tell me you're not gonna do it again. I want you to tell me what you will do. That's where our wisdom comes in. And then you have to heal with the person you've harmed. On their time, not yours. We're gonna empower the target and humble the bully. And then we're gonna go through six other positive behavioral intervention steps. To give him the opportunity or hurt the opportunity to do good. James Natchway said it so beautifully, do good because good is good to do. And then we wanna monitor their TV viewing and their video viewing because not, because they cause mean, but they help create a climate of mean. They don't want that for that kid. And then you wanna give them the opportunity to move beyond that and go from being a bully to helping the new kid who's just come to school.  So we're coming full circle with them. Now, a death camp survivor was asked, how on earth can we begin to break this cycle of violence? And he said, we must do three things. And I'll leave you with this. Pay attention to what's going on around you. Get involved and never ever look away. Thank you for your afternoon. Right, we'll talk about that last session. We'll talk about right. Thank you, sir, always wonderful. Thank you. I'll be out signing books. And then you have your next session. How long a break do you have? Look, you can read.


In 43 days, all eyes will be on Bemidji as the city hosts Hockey Day Minnesota. Josh Peterson shows us the progress at the site of the big event. In the shadow of the Samford Center on Lake Bemidji South Shore, the sound of construction could be heard. But this is no ordinary project as the city prepares the site for the 2019 installment of Hockey Day Minnesota. With anticipation rising, the host city is prepared to raise the bar. No one has gone this big in terms of the design, the space, the amenities, the electricity. Nothing has touched it yet. While the banners around the site say January 17th through the 19th, it's full steam ahead while keeping all the moving parts on track. I think we're ready. It's always hard to say, but we've certainly got a lot of support and you know all the finalized plans, the traffic plan, the parking, the shuttle, offsite parking and offsite shuttle are all being worked on as we speak. The location has been evolving a little bit each day and now more noticeable changes are beginning to take shape. Over the next few weeks, these massive bleachers will be hauled in and put into place, followed by the hockey glass and boards, creating a rapid transformation here on Lake Bemidji's South Shore. A lot of work. It's really the fun part. We've been working on this project for about a year, but to see things take place on site is where it gets really exciting. The transformation has also acted as a catalyst and driving ticket sales. The stands, the rink, everything coming in here can only help people. I think it's more inspired to get their tickets. With the calendar coming to a close on 2018, the new year will kick off with one of the largest hockey day celebrations ever. In Bemidji, Josh Peterson, Lakeland News. Over the next few weeks, locker rooms and more bleachers will be added to the site. Work on the hockey day rink will continue after Christmas.


Thank you. So I'm Naomi and I'm going to talk about the MiniR parser generator for Rust. Rust parsing in general and more especially the MiniR LR parser generator. So short disclaimer first, I put a lot of things into the description of my conference in the CFP because I really, really wanted my talk to be accepted. But eventually I just got assigned a half an hour slot so I would definitely not have the time to cover everything that was in the resume. So sorry about that. So let's under the beginning. What is MiniR? MiniR is an LR parser generator which was initially designed for OCaml. That's it. It was written in OCaml to produce OCaml parsers. It can also produce cork parsers. It's developed at the INRIER which is a French national research institute where I work. And it's very widely used in the OCaml words. I could have liked at the time to dig a bit more deeply on what is LR parsing but I would not have the time for that so let's just recap the basics. So if you know YAC, LR parsing is basically the kind of drama that YAC handles. Well, in fact, the old YAC handles only LA LR which is a more restricted class of grammar but modern YAC likes and all the full LR class. It's the class of grammar which are context free or context insensitive so grammars which does not contain any kind of ambiguities that could be resolved with only a broader context. And you can parse them using pushdown finish state automaton which is augmented with a stack of states for the context. And it has the very useful property of a runtime complexity being lining on the size of the inputs. Well, so LR parsing is better explained with an example. So this is an example of a linear parser file. So if you know YAC, it should be very familiar. It's really the same as a YAC file. You have at the top Rust definitions which will be included verbatim in the outputs. Definitions of tokens and their types. Notice that we have to include the type for every non-terminal like export and not only for the tokens. This is because the Rust type in France is much less powerful than OCamls. Then we include the double person sign just like YAC for absolutely no reason. And then we have a list of syntax rules which look roughly like BNF grammar definitions. So this kind of parser is kind of easy to write if you already have a BNF definition for your grammar. You just add semantic actions which in our case contain Rust code. So this is a valid many Rust parser which can be compiled down to Rust code. My work has been to port many of the Rusts which has been relatively easy because many was already supposed to support several languages. It has in fact two backends for OCaml. One which produces tables that encodes the transition tables of the automaton. And another that encodes the automaton as a nest of recursive functions. And a backend for Coq. Because yes, by the way, many can produce proved parsers which many is not proved in itself. But there's a technique here in which a certified tool, a tool which is itself verified, is used afterwards to check that the produced automaton is indeed matches indeed the same language that the input grammar. And that's the technique which is used in the COMSERT certified compiler for the C language. It uses many with this technique to verify the parser and it works. So many is a pretty solid piece of software. So what I've done is essentially that I wrote a table-based backend for Rust, table-based because it's easier. Maybe in the future I will try to write a code-based backend but for now it's a table-based backend and it's pretty fast enough. That's how it looks. It's ugly. I omitted most of it but you can recognize the structure of Finite State machine table, you have the action table which when indexed by a number of states give a number of tokens gives the next action. And below that a set of rules which contain the code of the semantic actions which will be executed when a reduction is performed. Notice the matches which are boilerplate code generated by many are to extract the semantic data out of the stack and push it back on the stack afterwards. Here underlined by the comments is the verbatim user code that has been copied from the parser definition. The matches, what those matches actually do is that they have to unwrap the semantic values from the stack because the stack contains the data of several types so they are tagged and those type checks are actually completely useless so that's why the over case is unreachable. Most modern parser, not even modern, most parser generator just use unsafe code to extract the data but for now it uses this type check which was pretty useful during the development. Fun story, what triggered the original offers of many interest into other parsers was that they discovered that those dynamic type checks or unsafe codes could be eliminated and replaced with GADTs so that's why they wrote many around the first place but at the time OCaml did not support GADTs. Now it does but the back end of many would be too complicated to rewrite so the reason why many was written in the first place has never actually been implemented. Okay, so how do we use that code now? The packaging was really the biggest problem here because we have to distribute something which is a mix of OCaml and Rust code. The generator is written in OCaml, the runtime library, yeah I forgot to mention that but on this example you can see that the code that will actually interpret the table that will actually execute the automaton is not in the generated output it leaves in a separate crate which is referenced on top which is many runtime and it has been to be it has to be distributed too so you have to distribute a generator written in OCaml and a runtime written Rust. The first option was to use OCaml which is the OCaml package manager which is obviously not a good option because when you're a programmer and you're writing Rust code and you want to use many you shouldn't have to know anything about OCaml. You shouldn't have to know how to use OCaml or whatever and in either if you are just a Rust user and you use a library and this library itself uses many you shouldn't have to use to install the OCaml package manager just because some dependency of dependency wants it. The other option is cargo bin. Cargo bin is a feature of cargo that allows to execute to install packages that contain a single binary but this is not sufficient because we still need to install the runtime with it plus a package cannot depend on the cargo bin so we would have exactly the same problem if you just use a crate who itself depends on the crate using many you would have to cargo bin install yourself because the cargo packages cannot register this dependency. Option three was just a regular cargo package but the main problem with that is that the generator so a cargo package which in its build script build.rs script will invoke the OCaml make file to build and install the generator but cargo will run this make file with a prefix which is a completely obscure location so it will be installed in a completely obscure location which makes invoking the generator binary very complicated so the ad was to write a wrapper crate which knows statically at compile time the prefix in which the generator is installed so that it can help you invoke it. Let's see how that works in practice when you want to use many in your package you start by stating that you're going to use a custom build script and that that custom build script will use many as a dependency so that's why the build dependency section of the cargo terminal file is for is for registering dependencies that are needed to run the build script not to run your package itself and in that build script you use the many a crate which is this wrapper library and you ask it to process your parcel file that is you do not explicitly invoke the generator on the command line uh you do not explicitly invoke the generator binary as you would do with most possible generator you go through a library which does that uh on the file system it looks like this that is when cargo will build the dependencies of your package and will build manier the generator will be installed in that location with a mangled version number uh version hash um but the lib manier the wrapper library knows statically at compile time the path of this wrapper of this uh out there so it can reference the name of the binary then it's all good only the the generator will produce uh open uh parcel output file that will be put in your packages own out there which you can reference using the environment variable out there so that you can include the generated file in your code like you do with most rust crates that uh generate code and we'll see later how uh how to actually invoke the the parcel from the rest of the rust code for now there's a detail that still has to be covered regarding packaging which is the runtime so the runtime there was a problem with the runtime which adds since the manier crates now contains this wrapper library it has to contain two rust libraries one for uh the wrapper crates and one for the runtime and cargo was not designed to fit multiple libraries in a single package in cargo the notion of package is more or less the same than the notion of create a single package is a single crate uh so we had to cheat and by cheating I mean that it's the okamu make file which is responsible to compiling and installing the runtime library in the uh in the out there location okay now we need cargo to be able to find that runtime library when uh when compiling the generated parcel because this out there is absolutely not in the rusty search path by default but then again the wrapper library knows the path of the runtime so we added a second function which is called cargo rusty flags and the uh what's this function do if you will if you were to execute that build script manually would be to print something like that under the standard output that is it will print the path to the runtime but prefixing it with this uh little text cargo rusty link search and cargo when running the build script will interpret this output and it tells you something like add this directory to the link in search path and this way cargo is able to uh compile the the generated parcel and link it to the runtime so it's a pretty interesting use case of cargo here it's pretty actually but it works uh we have a project that contains codes from different languages the it's quite complicated from the point of view of the point of view of the maintenance of the package that is me um it's slightly okay from the point of view of the person who directly uses many in its rough project it's a bit complicated but once you know how it works it's quite easy to get along with it and um that was my biggest concern it's completely transparent for uh the indirect user of mania that is someone who does not use mania but uses in its rough project a crate which itself uses mania for this programmer it's completely transparent all that he needs to do is have the okamal binary to lie somewhere in the path you just you just have to install it with uh your distribution package manager and that's all you then cargo and also all the rest okay so what now now we have our parser in the sub module and we need to invoke it this is the lexer interface that mania expects that is the interface that mania expects from a lexer uh it looks weird it does not look like an iterator it looks like an infinite iterator uh you see that the input function can either return an error either uh return a token a companion with its location but never say stop this is because uh mania as handles what is known in a lot passing as default reductions which means that sometimes in a in a state in an other state of the automaton there is a single action which is possible which is to reduce you do not have any other possible actions and so this way you can perform this action without looking at the looker head token so the advantage of this is that you can perform a lot of reductions without using the lexer which is a performance benefit but the side effects the positive side effects of this is that you can now detect the end of the if the final seat of the automaton is such a state that is a state which is with the default reduction where only one action is possible you can now detect the end of the stream without requiring any look extra looker head token uh which is a good thing because it leaves if your passer does not consume all the inputs to match the start production it's leave the rest of the input untouched for another passing run or to give to another passer or another part of your program or whatever for example for a command line passer it's especially useful because you can run this the whole passing phase and leave the rest untouched for the next command um but still most lexing tool for rest out there including my own uh reflex use a simple iterator interface so what if I just want to use a simple iterator here uh for that the many run time crates provides a simple structure which is called iterator lexer you just give it as an argument an iterator of the lexers and it will convert it to the right interface and if the iterator was ever to return known to indicate the end of the of the stream the iterator lexer would return a lexing error because since many does not need an extra an extra token to detect the end of the stream if it reaches the end of the stream while it still needs an input it's an error you actually needed that input and then it's the end is pretty simple there is a single function generated per each passer you give it a lexer and either you get a successful pass or a syntax error or an error that was reported by the lexer and carried along by many I also included an example using rustlex uh this is a very simple lexer with only five token types an identifier token type any identifier which is made of alphabetical alphanumeric characters the lambda keywords the opening or closing parenthesis and the dots and then there's slightly uh few boilerplate code you just have to add a niter once uh at the end of the token because uh in our case the grammar in the in the example I've taken the grammar would still be ambiguous uh without a new f token at the end so we explicitly edit and the enumerate is to use the numbers uh it's because my lexer doesn't have a proper handling of positions in the input stream so you just use the index of the token in the stream as an indicator of the location so that if a syntax error is detected it will be reported it will say for example at the sixth token there is an error okay so that's it that's how a many address works um I've said in the in the presentation of the conference that I would try to do a comparison of a lot passing and of many with other passing tools for rust out there so we'll try to do that without digging too deeply and uh staying as honest as possible so short lists not exhaustive of other passing tools for us that you may have heard of there is for example num I think it there was a talk about it here last year or there was a talk about it's alpha but I don't remember about what it was um num is a parsers combinator library for for rest um so let's try to to make a um a comparative uh list of differences between error passing and combinators the biggest pros of error passing is that you can it's hard to make a mistake uh error passing is by design on those only grammar that are unambiguous so it will check during the construction of the parser your grammar to check that it does not contain any conflicts whereas with combinators it's easy to accidentally make an unambiguous an ambiguous grammar and you will only notice it when you debug some weird example that does not pass the way you think it should pass and that's the way you will notice that your grammar is ambiguous and sometimes you will have to rewrite the entire grammar in order to get rid of that ambiguity so that's the big advantage of uh error passing of the combinators the other being that they're very fast they're always linear in uh in the size of the inputs whereas parser combinators can with certain pathological grammars in the presence of certain pathological inputs trigger exponential behavior at runtime it can happen because of uh the left recursion the top down left recursion in parser combinators um on the other hand the biggest disadvantage of error passing is that combinators are much much easier to write like um error passers are pretty easy to write if you use to writing bnf grammars of this kind of thing but still and uh even more personal commenters are quite easy to debug whereas in error parsers when you have a conflict it's usually requires kind of it's requires that you kind of understand or error passing works under the hood in order to be able to debug the conflicts many have tries to make it easier by explaining the conflicts in terms of the grammar or whatever than in terms of the automaton but it's still requires a bit of thinking to correct them properly and uh last and more important uh it's pretty hard with error passing to properly handle runtime syntax errors that is the parser is correct but you fit it with an input for example uh compiler compiles a program which is syntactically wrong you provide it in an input which is malformed the parser should report to the user um an error which should be as precise as possible about where the error occurred and why and error parser makes it very hard to do that properly and I will try to give a short uh introduction to the solution that mania proposes to this problem mania introduces a flag uh which is list errors uh by the way another handy feature of the cargo package for mania is a link binary function that you can use in your build dot error script and which will create a sim link to the generator binary at the roots of your source tree um which is easy which is cool during the development of your parser because you can iterate quickly try new flags make change to the grammar without having to edit the build script and uh run the whole cargo process at each uh at each time so if you use this list errors uh flag mania will generate a file containing the description of all the possible states in which an error could ever happen it looks like that well this is a single entry in that file and uh I definitely don't have the time to explain uh in details what this file uh how how these these descriptions work but um to me shortly h3 contains a description of an input that uh of a kind of input that could uh they could lead to a certain class of errors and the user can write the user here I mean the user of mania the programmer will write a mania parser can write in this file detailed error messages then you give that file back to mania with another flag which is compiled errors you can also invoke it through the wrapper library with the compile errors um function and it will produce another rust code file that you include just near to your uh parser file and it generates rust code so that when you get a syntax error at the end you get that error object and this error object will have an as str method which will uh return the exact uh error message that was referenced in the error file uh it's uh it overflows but uh here we see that the parser returns an expected token expected an identifier which was the error message that we wrote in the error file so that's the mechanism that mania exposes to end all runtime errors and it takes a while to to get used to that mechanism but it's very powerful let's continue with our uh comparative list another tool that you probably have the order of is la lor pop which is written by uh nico matakis uh it's a full lor parser yes it's not la lor uh you can ask him what the fuck this name but it's also just like mania a full error one parser and the big advantage it has of a mania is that is way way much better integrated with the rust environment it has a nicer syntax which looks more closely to the right which uh yeah resembles more closely the rust syntax than mania syntax which is basically the same as yak it gives nicer r messages which integrates nicely with cargo uh it has a nice reporting of conflicts which uh i believe is the same of mania but then again with nicer better presented error messages it has macros uh which allows to abstract away repetitive uh fragments of a grammar and which as far as i understand have more or less the same goal and expressivity as mania's parameterized non-terminal but those only mostly work in uh the current implementation of the rust backend that is they work but they require a lot and a lot of type and notations which make it a bit painful to use where la whereas la lor pop has type inference uh which we like in mania in short la lor pop is designed to be a passenger that are for rests and because of that it's more comfortable to use in the rest setting than mania uh okay so there are a few other features that i didn't have the time to dig into but that i will mention anyway and they mostly don't work at the moment but that's where we're looking at right now uh mania as in the okamu version of mania is an incremental api that is instead of exposing just a single function that you call and either it gives you a successful result either it gives you an error it will expose all the steps of the passing process and at each step you can inspect and even modify the internal state of the parser and uh this is useful because it allows you to implement uh specific error recovery strategies that are specialized to the language you're trying to pass uh whereas the default error recovery mechanism for la for a lot of parsers is not very flexible and not very adapted to the variety of languages that you would want to pass with a lot with a lot of parsers uh this incremental api is implemented in the rest back in right now but it's not exposed because it exposes unsafe internals of the back end uh and if you were to use those functions incorrectly you you could uh trigger undefined behavior or make the parser crash so this this should work in uh when in okamu again um they use gadt to make sure that this interface is handled correctly but in rest we still have to figure out a way to make it work safely and libraries many has uh allows to write a portion of grammar definitions once and for all in a library that you can reuse in all of your parsers it should work but it needs porting because the standard library of many contains um semantic actions that are written in okamu and will not work with a many of them with a rest parser and there's probably a whole lot of other issues um notably lexical conventions uh if you know the accent text you know that the type annotations for uh terminals and non-terminals are put inside angular brackets and the fun thing the the fun thing is that the lexor of many is completely stupid and it relies on the assumption that a valid okamu type cannot contain any angular brackets so in order to pass the type annotation it will just take the first closing brackets but rest types can contain uh angular brackets because of the um generic types so if you have a type like that many will interpret box expert without the closing bracket as being the type and it will fail so you can work it out by using a type alias but it's cumbersome you have also uh case warnings uh because many expect non-terminals to be uh not to be capitalized but each of those end up with uh a name in the produce rest code that rest expects to be capitalized so either you have a many warning either you have a rest warning depending on how you name your uh your names the useless tagging of tags of stack cells uh the thing I was talking about uh the useless uh dynamic type checks when retrieving and pushing values uh back and forth the lr stack uh this should be done in unsafe or with some kind of uh of typing I don't know how exactly we could use the rest type system to do that but maybe it's possible uh there are a lot of features like spring into multiple files which is not supported and probably a lot of other bugs that I'm not even aware of so use it try it and find and report those bugs thank you for listening