 I'm Samantha, and this is Jason, in case you couldn't guess. And we work together at Hopscotch. And Hopscotch makes a visual programming language on the iPad for kids. So today, we're going to talk about four lessons we've learned, building out a Hopscotch community where kids are publishing and sharing projects on our open source community, thousands of projects a week, tons of beginners getting started with this language. And we've actually, turns out, you learn a lot when something like that happens. So lesson one is to be mindful of who is a member of your community and who is not. So looking around the room at all you nice folks here, it's actually, I hate to say this, it's a little bit homogenous in this audience. If you look to your left and your right, the people next to you probably look a lot like you. And that's something that we really set out to change with Hopscotch. So programmers tend to be a very self-selecting group where programmers meet other people like them, teach them how to program, and kind of perpetuate this vicious cycle of only a certain type of person, generally a white male nerd learning to program. And when you Google Learn to Code for Kids, you get things like hakitsu, fighting robots in JavaScript, or robo-fight, fighting robots in .NET. And if you want to make a more diverse community, you actually need to create tools for beginners that a more diverse group of people will like to use. So a hint is that girls actually don't like fighting robots. So this is something we thought about a lot with Hopscotch, and something that we worked on a lot where we were very careful. Whenever we add new art, new assets to our app, we try and make sure that it doesn't skew to one gender or the other. And in our community, our featured section, we try and make sure that we feature projects like Beautiful Rainbow. And Hopscotch has got talent, but also bird bullets. And deer hunt for the boys. And this has worked really well. We've seen girls be really successful with Hopscotch, and we've seen boys be really successful with Hopscotch. So when you're starting out, trying to create a tool for people to learn with, to join your community, think about how it's themed and what audience it speaks to, and you can do a lot with just that. So I'm gonna turn it over to my colleague, Jason here. So the second lesson that we're gonna talk about today is make your community accessible for beginners and useful and powerful for the professional users as well. There's kind of a scale for most programming communities between beginners and experts, and there's a spectrum between them. We're gonna focus right now on the beginners because they're usually who our target market is, the kids who are just starting out programming for the first time. For us, it's really important in order to get to beginners to make it really accessible for them. It's really important because programming has a lot of stumbling blocks to get started with. So the first most obvious stumbling block is the programming environment. I'm an iOS developer and I love Xcode, but it's really not something that you can just jump into. There's a lot of configuration you have to get done before you can really start programming. So with Hopscotch, we make it kind of easy out of the box. It's useful as soon as you turn it on. Programming is very difficult when you're just getting started. If you're trying to write something on pen and paper, it's very easy. You just grab a pen and paper. But the programming equivalent to that is kind of like you get in your car, you go to Staples, you try to find a pen, you got to make sure that the pen's compatible with the paper you have at home. Then you go home and then you've already forgotten when you were trying to write down. So you've just lost your users right there. So at Hopscotch, we try to avoid that problem by making it immediately accessible as soon as you turn it on. We looked at how most coding works, most programming works, and the name is kind of right in the act. It's coding that's difficult for people. So coding is command line-based. It's textual. It's symbolic, and it's abstract. And these are very powerful ways of working, but they're also very difficult ways of working. So we looked at how that's been solved in other areas, and we looked at how the GraphQL user interface solved that problem. They solved it by changing the way that you work with a computer from being typing out and trying to remember your programs or trying to remember your commands to actually just looking for them with your eyes and then pointing at them with your fingers. It's been really successful for computer interfaces in general, so we're applying that to programming as well. So when you fire up a Hopscotch project, you're not typing in code. You're actually dragging your characters around the screen. And then you tap on a character and you program it and give it something to do. So this is really great for beginners, but the trick is to get these beginners to become our experts. We're not really trying to attract experts from other programming languages. We're trying to turn our beginners into experts, and we do that by making the environment very accessible. So lesson number three. Start with a solid mental model and also read the book Mindstorms by Seymour Papert. It's essential. So a mental model is basically how you adapt the computer to the user. Now, there are two parts that are involved in programming. There's the person's brain and then there's the computer. And we don't yet have a whole lot of control over how people's brains work, but we do have a lot of control over how the programming environment works. And that's what the mental model does. It adapts that into something that we can't normally adapt to. So it's really important to pick a strong mental model so that your users can understand what they're doing. So the book here that I'm referring to, Mindstorms, is written by Seymour Papert in the late 70s, and it's about his programming language called Logo. Now, Logo's mental model is that of the turtle. The turtle is a digital little character on the screen who moves about. And in order to get the turtle to move about and draw things, you have to think like the turtle. So if you ask a child how to write a program to draw a circle, the mental model is the child says, how would I do it? Well, I might take a step and turn and take a step and turn and repeat that 360 times. Now I have a circle. And then they program that into the turtle. So suddenly you've just taught the turtle how to do something. That's a really strong connection between your program that's a lot more strong than, say, draw an ellipse at this angle with this radius of these starting points. That doesn't make any sense to most kids, but walking and turning makes a lot more sense. So that's one strong mental model. And I can't emphasize enough. Just go read Mindstorms. If you want a copy, I'll give you one. Seriously, read it. Okay, I'm going to hand it back over to Sam for a final point. So the final lesson is try making a language you actually don't need to be a whiz to do it. You don't need a PhD in computer science to write your own programming language. You don't even need a bachelor's in computer science. You actually don't even need to be that good of a programmer. When I started it out, I had been a Ruby programmer for a couple of years, had not studied computer science, and just kind of went for it. So, you know, we wrote Hopscotch in Objective C, but Ruby and JavaScript are also great candidates for just implementing your ideas and getting them out there. Swift also, I think, is going to be a really good language for writing programming languages. What I'm actually looking for is for someone to write a programming language in Hopscotch for our Hopscotch users. So, anyone here in the audience is up for the challenge. I promise you that you will be featured on the front page of the Hopscotch app store and become an eternal Hopscotch celebrity. So, the lesson here is that we need, in order to increase the diversity of our programming communities, something needs to change. In the past few years, the diversity has actually been declining, not getting better. And we need more people to be thinking about these problems. We need more people to be thinking about ways for beginners to start with programming. And we need a lot of different people to bring different perspectives, because not everyone learns in the same way. You can even bring in people who are not programmers. And I guarantee you that these people will have a very different and interesting perspective on how to write a programming language than someone who's been doing it for a while. And your language will definitely be better for it. So, go out and write your programming languages. Thank you, guys.