CoRecursive: Coding Stories - Story: From Burnout to Breakthrough

Episode Date: June 4, 2024

Can you imagine risking your career to making coding easier to learn? Meet Felienne Hermans, a professor who did just that by stepping beyond academia to redefine coding education. Disillusioned by he...r research’s limited impact, Felienne discovered a new calling in teaching coding to underserved students. Her journey led to the creation of Hedy, a programming language designed to dismantle language and learning barriers in coding. Confronting skepticism from her peers, Felienne’s dedication to accessible coding challenged traditional academic priorities. Felienne’s story is a powerful reminder of the impact one person can have by following their passion against the odds. Episode Page Support The Show Subscribe To The Podcast Join The Newsletter  

Transcript
Discussion (0)
Starting point is 00:00:00 Welcome to Co-Recursive. Each episode is the story of a piece of software being built. Today, we have the story of a burnt-out academic who, in trying to find some renewal of her passion, starts teaching underprivileged 12-year-olds how to program. I remember so vividly one of the first parent-teacher conferences. There was one of the kids in the class doing very, very well in computer science. So the dad comes to me and he says, why should my boy pick computer science? And the kid is right there.
Starting point is 00:00:33 So I said, well, if he picks computer science, maybe he can work at Google or Facebook or Amazon. And the guy looks me in the eye and says, with his child next to him, I don't think my boy will ever work at Google, ma'am. I think, like, why are you robbing your child of, you know, this ambition? My husband works for Amazon. He used to work for Google. So I know that this is possible for your kid. I might have said, well, if your boy picks computer science, wings will grow from his back, right? And he can fly to the sun. And this is also a racial thing because I'm white.
Starting point is 00:01:09 So this non-white dad was also like, this white lady doesn't understand who we are, right? I don't also think he was necessarily thinking those things. But I think there was just such a big difference in my life experience and his that he thought I was lying to his kid. I was giving him a fantasy life that has no basis in reality. It was life-changing in that moment, really. That is Felina Hermans, a professor of computer science who also teaches high school one day a week. Felina's story is wild, right? She faced challenges in academia. They led her to teaching 12-year-olds. And then she risked her career on this kind of crazy side project that we're going to be unpacking that led to her rethinking computer programming and sparked controversy everywhere she went.
Starting point is 00:01:56 It's a lot to cover, but I think it will change how you think about programming languages and also about learning, two areas she's very focused on. But even more than that, Felina's story about her career kind of tells us how to navigate our own careers. How, when none of the options seem right, maybe you can just create your own path. It might be some of the best career advice I've ever heard. And I don't want to oversell it, but yeah, this is an engaging story that might change your views on programming. And it all starts when Felina completed her PhD. So doing a PhD and being a, let's say, adult academic is not really the same thing. And I
Starting point is 00:02:41 really had a lot of fun doing my PhD so I thought this was really fun so I would just do more of this thing that is fun so the for a few years I was really really trying to be a professional academic it sort of eats you up you have to play by the rules of the system and and I'm not really great at playing by the rules of the system and then without me really having the word right it wasn't that one day I thought I cannot do this job it's just more and more every day it feels like you're moving through mud or sludge and everything goes slow and you have no energy but it's definitely not from the one day to the other that you think I hate this life it just goes slowly and you really want to be an academic but But then at one point, I somewhat realized I don't think I can do this anymore.
Starting point is 00:03:31 Part of the problem was that Felina didn't feel that the work she did mattered. If you do academic research, then, you know, you download a data set and do analysis, you write a paper where you say, well, this is our hypothesis, this is the data. And then you publish the paper. You have to wait for months, sometimes full year, to get this okay from three other random academics. And then the paper is published. How has the world changed?
Starting point is 00:03:58 Hundreds, thousands, hundreds of thousands of papers appear maybe every year. What am I doing? Is this really where I can add the most value? And I didn't have words for those feelings, but I definitely had the associated feelings. I cannot bring myself to do this every day because no one is consuming my knowledge. No one is on the other side. All this, I should mention, took place in the Netherlands. Felina was teaching at Delft University of Technology, and she lived near Rotterdam.
Starting point is 00:04:27 And the important part, just five-minute bike ride from her apartment was a high school where they needed to start teaching programming to their students. And they came to me and they said, well, we know for so long, do you have like a student to do some teaching for our kids? And then I remember myself saying, well, what about if I do this? And now if I look back at it, I sort of, I'm hovering in the ceiling, right? Looking at this scene, just without any plan. I didn't think, does this fit my schedule?
Starting point is 00:05:00 I didn't think, what will my department think if I do this? I just had this urge. I thought, I want to do this thing. This sounds like a thing I want to do. And I hadn't had a feeling that there was something I wanted to do for a really long time. So I just said, but then can I teach your class? And they said, yeah, sure. Well, if you want to do it, by all means.
Starting point is 00:05:20 And that's how I got into high school teaching. This high school was in a very urban area. But not in a rich part of city center not like Manhattan or something but inner city as in a lot of high rises. The area where my school stands is one of the poorest zip codes of the Netherlands. The kids that we have in the school are very often kids from minority families, from Rotterdam is a big port harbor city. So parents that have often unskilled jobs. So that is a bit the context of this school, which is also why I was excited to teach there. Teaching at this diverse school in a brand new class, Felina had the autonomy to design the syllabus. And she initially thought she could just rely on her university curriculum.
Starting point is 00:06:07 Because in university, there's not an assumption that kids already or students already know programming. So we will just do more or less the same as we do in university. What is a variable? What is a for loop? What is a condition? But then for the 12-year-olds. Oh yeah, the 12-year-olds. Here in Canada, I started high school at 14, I think. But in the Netherlands, you start at 12. And Felina is essentially teaching seventh graders, and her plan is to use a university level
Starting point is 00:06:30 Python curriculum to guide them. Yes. And those 12 year olds, I have, I don't remember the exact number, but let's say I have 120 PowerPoint slides, like, I will explain you many things. So then after five slides, it's like, I don't think I will reach the end of the 120 PowerPoint. 12-year-olds don't just sit quietly when they're confused. They will tell you. So I don't know what you're saying, but it's also why are we learning this, right? So because another difference between an 18-year-old in computer science major in a university is they already know they want to learn program. So maybe they're confused, but at least there's some lesson buying. Whereas a 12 year old, you really have to lure them in saying, well,
Starting point is 00:07:13 if I, this, it looks very confusing. I see that this Python doesn't make any sense, but stick with me. And then in three lessons we can make this. So I definitely realize that younger kids but probably also university students do need a little bit of you explain something and then they do something and you explain a bit more and they do a bit more and so definitely my teaching style also the teaching I was doing at the university changed because the difference I think between an 18 year old and a 12 year old isn't an 18 year old-old and a 12-year-old is an 18-year-old
Starting point is 00:07:46 that's confused will think it's about them. They don't understand anything. They go to their dorm and they cry. And maybe they're like, I don't understand anything. But a 12-year-old that's confused will tell you that they're confused. They'll say, I don't understand anything. Anything you said. Like, okay, but can you, like, is there one thing that you remember?
Starting point is 00:08:05 No. Not if it made sense to me at all right it's hurtful but it is also really useful because then it requires you to think again okay but then how do i explain it in a different way so it's definitely a stone that you can sharpen the axe of teaching on if kids give you feedback and remember this is not Felina's real job, right? Her real job is at the university. And it's more than a full-time job itself. Teaching this class might have been manageable if it involved, you know, just guiding kids through this existing curriculum. But that's seeming like that's not going to be the case. So definitely I thought, oh my god, this is so much harder than I thought it was going to be.
Starting point is 00:08:45 But it was more like, I want to understand why. Because these were all work-related functioning 12-year-olds, right? They could read, they could do math, they were doing well in German, French, history. So their brains were okay, right? But then they were all struggling. Almost all of them were struggling with programming. So I couldn't kid myself into thinking, well, they're just lazy. They're just not very bright.
Starting point is 00:09:08 Obviously, this was my bad. This whole thing made Felina curious. She'd been programming since she'd been even younger than these kids. So she knew it was possible. And in her career, working at a university, she, of course, taught many people how to program. So she had the teaching jobs. She knew it was possible. But yet she couldn't get anywhere. So then I got into this phase in my career where for a few years
Starting point is 00:09:29 I didn't really do my actual job of still being an academic. I started to read a lot about how people learn anything. And that in itself was so interesting because I went to a computer science program, bachelor, master and PhD. And then all these professors are saying in computer science, I think specifically, well, we only teach you one programming language, but later in your career, you will learn many other programming languages. So you have to teach yourself more programming. Yes, great. This is great advice, but no one ever teaches you how to learn anything. And there's so much science to learning. I thought it's so frustrating and sad that no one either in computer science, like academia,
Starting point is 00:10:13 or in professional programming, why don't people know about learning? Why isn't there like one course about learning in any computer science curriculum or any curriculum that would be useful? At this time, by the way, Felina did not have tenure. Tenured staff at a university, like they have a lot of latitude in how they do their job, but she wasn't there yet. And also her PhD work had been on programming language refactoring. That was her area. Her area was not education adjacent. Basically, her career is not really in a safe spot. There's a strict criteria for
Starting point is 00:10:46 advancing to the next stage. And what she's doing is stopping that type of work and diving in to teacher education, right? Making the challenge of teaching these kids her new focus. And she keeps up this different direction for a couple of years. The pinnacle of this is her book, The Programmer's Brain, published by Manning. A fantastic book, but yeah, not really part of the scope of her job. But from all this research, she does start to see a path through to teaching these students. So I think the biggest thing that I learned, which is also in the book, is that what you already know shapes what you can learn. So if you don't know anything, you also cannot learn anything.
Starting point is 00:11:30 And I think the best way to explain that to people that, for example, speak English, but not Dutch, my language, is if I would say something to you in Dutch, you cannot even remember what I'm saying. Ik zit op een stoel en ik ben aan het breien. I don't know. I'm sitting on a chair and I'm knitting. This is very easy for you to understand. You can immediately process it.
Starting point is 00:11:53 You can repeat it. You can immediately ask questions also. Alphaline, what are you knitting? What kind of chair? So you can take this information, integrate it into what you're thinking and run with the information. But then if you don't know Dutch or if you don't know what a chair is or what litting means, you cannot even explain why is it confusing.
Starting point is 00:12:14 Why don't you understand Dutch, right? I understand Dutch. Everyone I know does. Why are you confused by what I was saying? I think that is really the most important thing I learned. If you have very few elements in your long-term memory to connect information to, then it'll just go down and I can speak Dutch to you for a few weeks every day and still you don't remember anything. You haven't learned grammar or vocabulary, nothing.
Starting point is 00:12:39 And this is how so much of programming education. And I think the reason that it hasn't entirely spectacularly failed is because so many kids traditionally in computer science programs were me. They were already programming for maybe a decade when they were 18 year old. So then your level can be really high. You can explain many things because maybe they don't know programming really well, but at least they already have some content. I knew what a compiler was. I knew some of the keywords and so
Starting point is 00:13:10 did most of my friends. But then if your population is changing and if more and more people are coming in with a lower understanding of programming, then you start to see issues because then they have less prior knowledge to connect things to. It rings true to me. I feel like, yeah, I went into computer science and I did know how to program and it went fine. And there's lots of people who didn't go fine. But if you think about it, like, yeah, if you took a French class and some of the kids already knew French and they seem to be really good at it, like maybe the teacher just didn't
Starting point is 00:13:41 know how to teach French. Yes, yes. And I think this is also traditionally been sort of a defense from professors in computer science. They're like, well, so many of them do understand it. So I must not be terrible. And, you know, they already understood it. This is what I also learned in my first few generations of the high schoolers. Yeah, there were some kids that were liking it and learning.
Starting point is 00:14:03 But they also already knew programming. And also they liked programming already. So it didn't make them more enthusiastic. Some of them maybe I made less enthusiastic and they didn't get someone from zero to, ah, this is okay. I got people from, I like this until, oh, I really like this. So the only way forward, right, is to find all the things that the students don't know and work backwards, finding ways to attach that knowledge to things they already know. It can be a long journey, right? Take the Hello World program, for example, the traditional first step into programming. You have to learn that there is
Starting point is 00:14:37 something that is the source code, that is print Hello World, and that that produces output. That's the thing you have to learn. You have to learn where do I type the code? Where do I click to get that? Many of these things to learn aren't really about programming itself. They're just like base things, right? Where is the file? How do I edit it?
Starting point is 00:14:56 What even is a file? Let alone like what is print and why do I need brackets and why do I need quotes and what does this syntax error mean? Whereas if we teach other things, if we teach math or if we teach language, then kids write on a piece of paper and they make one spelling mistake. We don't immediately say,
Starting point is 00:15:14 right? Just, you know, we correct it as a teacher. So this fighting, this inhumane machine is just not a great way of teaching. It is very, very, very hard to get everything right. And if you get something wrong, you get an error message. You read letters, so then you get really stressed. These are conditions that are really bad for learning. So I thought, I know how to make a programming language. I could make a programming language that doesn't teach
Starting point is 00:15:45 everything at the same time. Why do we need brackets and quotes? If you just wanted to print hello world, the syntax might as well just be print hello world. Why are there quotes there? Why do you need parentheses if you just have one argument? So I thought I will just make a small prototype in which we have a few steps. So first you have print without anything, then we add quotation marks and then we
Starting point is 00:16:09 add parentheses and then we can do this also for other quotes. If you want to do repetition, why should we do for I in range? Just do repeat three times. And then we add a little bit more and a little bit more. I thought, well, let's just make a tiny prototype with a few levels so they can see if for my next generation of students, this is easier and more engaging and something that they paint less. For me, I'm a little anxious about Felina's career progression here.
Starting point is 00:16:38 So this is great news, right? She ventured out far, but she's returned to her specialty, programming languages. However, the programming language she's considering, it has some unusual features. So I had this idea. I was reading a book about linguistics. And somewhere in this book, it said that if you're a speaker of language, then you're also a creator. Because I can make words.
Starting point is 00:17:01 And no one can stop me from making words. And if you understand what the words mean, congratulations, now you have a word, right? Something like, if you make a mistake and then in American English, you can say, my bad. That's actually something that someone made up quite recently. There was this, I don't remember his name, but there was like a basketball player that once said that in a game. Oh, my bad.
Starting point is 00:17:24 And now this is a concept, but that didn't used to be a concept maybe 30 years ago or something like this. So, and I have a screenshot in my research diary of that. And then right next to it, something like, I want programming to be like that. Why do I have to program in the way that the compiler tells me? Why am I not allowed freeform? Why does it have to program in the way that the compiler tells me? Why am I not allowed freeform? Why does it have to be exactly this mold? That's so limiting for expressive power.
Starting point is 00:17:52 In Felina's vision, writing ambiguous code is acceptable because instead of triggering a compiler error, you just run it. Then the system says, hey, user, I could interpret this in two ways. You want this way or that way, or do you want to decide later? So I was cleaning this idea to my husband, who's also a programmer. I'm like, well, you know, maybe programming languages could be that way. It's like this hypothetical thinking example. And immediately he goes like, no, but then everything would break.
Starting point is 00:18:21 Then no one can work anymore. Calm down, right? This is just an experiment. And it's so interesting to see like what thought experiments do we allow, right? As a programmer, I get this. Like being ambiguous when you're writing code just feels wrong. And that's all I had considering how many strange programming languages are out there. But yeah, meanwhile, she's not really doing the traditional research that's expected of her as part of her job.
Starting point is 00:18:46 And then the confusing thing, I think, for everyone was that I was still somewhat successful that my research also went towards computer science education. So I started to write papers about how kids learn programming because that's what I was doing and that's what I was interested in. But I was working in an engineering school, something like MIT in the Netherlands, and doing research around learning for then felt not really out in scope there. Felt like this is not what we do at an engineering school. You have to do engineering stuff, which is not interviewing 12-year-olds. So it was somewhat clear that I wasn't a great culture fit for the type of things I was interested in. I imagine Felina's department had just being confused by her, right? Like if you're great and passionate about this thing that isn't really supposed to be your focus, and then you're not doing the thing you're supposed to be doing,
Starting point is 00:19:41 like it's a bit of an odd time for your boss so ultimately they did give me tenure but it was very uh reluctantly and they also made it somewhat clear that the rest of my career probably was not going to flourish if i would stay there so you got tenure but then you were also getting like a threat like how did you process all this yeah so i think they didn't see it as a trap but more as an advice, right? It's like, it's like if you break up a relationship, you say, well, I just think you'll be happier with someone else. It was more like this. Like, we don't think this is the best place for you, right?
Starting point is 00:20:18 A few days after that, I had a phone call from someone from another university 20 minutes away saying, well, we have a vacancy. Would you consider applying for this vacancy? Then can I get a promotion? Because I would like to be a social professor because I'm already assistant professor with tenure. I don't tell him that I'm not so excited anymore. Maybe you can offer me a promotion. And would that be on the table?
Starting point is 00:20:39 He says, maybe this is on the table. Come have a chat. So I got a job offer there. So Feline has this new job, partially because of this education research that was caused by her, you know, struggles to teach 12-year-olds. And this is around the end of 2019. So COVID's coming. But of course, she doesn't know that. She just knows she can't stop thinking about this idea she has about a soft programming language. And in the Christmas break of 2019 to 20, that winter, in a few weeks, I think I will just make a small prototype, just like three steps with syntax,
Starting point is 00:21:16 just very simple so that I can try it with my next generation of students and just see what happens. So it was the research question was, firstly, can I build it, right? Do parser frameworks allow me, because they're also in this way of thinking of this very strict way, and can I make something softer? And can I make one language with different levels where first you don't need quotes and then you do, and you don't need brackets, but then you do
Starting point is 00:21:41 need brackets. The final step is a functioning subset of Python. So it's really like trainer wheels on a bike that you have an adult bike. You want to have that bike. You see where you're going, but it's too hard now. So we put the training wheels on the bike so you can practice. And then after a while we take the training wheels away and now it's the same bike. It's still very cool, but without trainer wheels. The real bike part is important because this whole thing has to pass the sniff test from a
Starting point is 00:22:09 12-year-old. They have to think that they're learning something important. Felina had taught kids a visual language scratch before. But then a 12-year-old will say, that's a toy language. That's for elementary school kids. I want to do a textual language, but a Python is a bit too much. So the question was also, can I sell this to kids as a real language? So Felina spends her Christmas break working away on this language,
Starting point is 00:22:32 and she's getting caught up in this excitement that is the early days of a new project. And I really remember also then, the January after that, I started to cancel a lot of appointments. I just said, I'm sorry, I know I made this appointment, but I'm just working on something that's very important. So she gets the first version of the language out. It's web-based with lessons that you can click through. And, you know, it's hosted on a Heroku URL. And you get walked through this
Starting point is 00:22:58 version of Python that has training wheels. And then the pandemic hits. Everything stops. But the nice thing is that many people want to do something at home with their kids and the university I'm then at, which was Leiden University, they write this little press blog, Oh, are you stuck at home with your kids? One of our scientists made a nice programming language that is free that you can use. Many people start to use it and it's open source it's on github so people start contributing to the language so i start iterating while it's the pandemic and that was actually well it wasn't great right no one liked covid but for me it was perfect because i had
Starting point is 00:23:39 ample time not going to conferences not doing anything anything. And feedback was streaming in, even after in the first year. So that's from beginning of 2020 to the end of 2020, already 100,000 programs had been created by people using the system, which was just great for quick iteration, because I could easily mine the data, say, oh, this is a very common error. So maybe this should be different. And that really kickstarted the project. So Felina poured herself into the project, and it continued to spread.
Starting point is 00:24:11 As the project grew, she struggled to keep up. At some point, the cost of hosting Hedy started to get out of control, and her husband got involved. Oh, I will do many optimizations to save us money. So I was, like, happy about that. But also, then then it even never stopped. One of my friends who's also a professor was complaining, saying, well, if I come home, I want to do some research. But then my wife wants to chat with me and my children want to
Starting point is 00:24:38 play with me. So annoying. I want to come home and I want to think of programming. Then I said, well, I have a few for you. Do you know how my love works? I do programming all day. I come home. I want to chill. I want to chat with my husband and watch a movie. You know what my husband says? Selina, welcome home. I have a great idea for Hattie. Let's do some programming. So he's also very excited about Hattie and he often has ideas. So at one point I said, no, I don't want to work on this in weekends, nor do I want you to work on my old resource project in weekends. It's really weird if your husband sends you unsolicited pull requests. But at one point I said, I don't want you to work on Hattie so much
Starting point is 00:25:20 because then I'm also working and I'm too going to work on Hattie all the fucking time. So Hattie made it through the pandemic and even after the pandemic, growth continued. But Hedy's true niche, the thing that I feel is most unique about it, it didn't appear until Felina decided to do a user study on the language. This was still, we were still doing it online. So the lessons were online.
Starting point is 00:25:40 The kids would come into our online class and I wasn't teaching the class because it would be a bit weird if I would teach the class. So I had a colleague that taught the class and then we just had them fill out the questionnaire. Here are three questions. What do you like? What do you hate? And what do you think we should improve? Survey says, what do you want to improve? And the kids say, we want to program in Dutch. That's right. Dutch kids, Dutch people are supposed to be really good at English and Dutch is like English, British print. And we have this echo command. Echo is echo. It's just ask is vraag. So if the first three go hands, two of them are
Starting point is 00:26:18 already the same. But the kids said, we want to program in Dutch. Now Heidi's website had always provided instructions in Dutch with error messages in both English and Dutch. We would say, Only the keywords were in English. So from that perspective, it's like, all of these things are Dutch. Only that small little word isn't in Dutch. Why? Because this is how I learned? It's really hard to make something non-English. I didn't really think about it, but I thought, well, if this is what the 12-year-olds tell me, I should listen to them, right? I cannot just say, well, I think I know better what you need than you. I'm doing this study because I want to really formally understand what they want. And also, I was curious as a technical challenge. I was like, oh, let me see if I
Starting point is 00:27:08 can do this, how far is it to build a non-English programming language? And then I built it. And as soon as we built it, then the project exploded even more because you understand this as a programmer. If you have two languages, you have N languages, right? French was one of the first languages we had. French, Spanish, German. And those languages are farther away from English than my language is.
Starting point is 00:27:34 Prins is prins in Dutch, but in Spanish it's imprimir. In French it's affiche. In German it's drücke. These words are very different. So the farther away we were getting from English, the more I thought, this actually makes sense. And then people starting to add non-Latin languages like Hindi and Bengali were two of the first non-Latin languages.
Starting point is 00:27:57 And now we ran into many technical issues that we didn't have in the Dutch or French version because they have different character sets that we didn't have in the Dutch or French version because they have different character sets that we didn't properly support. So we had to do more programming and more and more and more languages were added to the point where one of my friends who was from Palestine originally says, well, what about Arabic? That sounds like a lot of work, man. But also it sounded like a cool technical challenge.
Starting point is 00:28:25 So we also now support Arabic, which requires the CSS framework, Tailwind, that we use. They didn't use to support right to left properly. They do it better now, but it didn't then. The editor, the error message, the character set, all sorts of Arabic stuff that I didn't know anything about. But again, it was showing me how different programming can be. What is programming and where can you push? So the multi-language support just kind of snowballed until Felina hit a problem she'd never even heard of before.
Starting point is 00:28:58 So we call our numbers, like my zero, which is a circle, call this the Arabic numerals. But actually, Arabic uses different numerals. They have like a dot for zero instead of something like a circle. A different numeral system is something that we had to implement that I didn't know about. Quotation marks is another one, right? We have single or double quotes in English, but in French, some people
Starting point is 00:29:22 might know, you have guillemets, which is like smaller than, bigger than, that's used as quotes. Danish uses the same symbols, but the other way around, we support that. Chinese has quotes that look like squares. We support that. These are things I didn't think about. Arabic has a different comma. So our comma points towards the beginning of the sentence. And an Arabic comma also does that. So it points the other way around. And so it points upwards instead of downwards. So they have a different comma, a question mark, an exclamation mark. So all of these things that I didn't know that I had to change.
Starting point is 00:30:02 Also, we needed to add that to the grammar, which was more than I thought it would be, right? I thought about flipping UI. I didn't think that the comma would be different. How did I know any of those things? I didn't know anything. Yeah. But like, what if I need to work on some software and it's written by Belgian people and I don't understand, you know, Flemish? Yes.
Starting point is 00:30:22 And this is a great question. And I don't blame you for asking this question, but there's two answers to that question, or maybe even three answers. One answer is, why do you need to know, right? Can there be spaces, like there's Black people spaces and women spaces. There can maybe be spaces where people express themselves in a way that other people don't understand.
Starting point is 00:30:45 So maybe there can just be Flemish source code that's only for Flemish people. Another answer is this world already exists because many people, if they create software, they have to use strings in the language that they type. Like for example, the Dutch government has a tax system in Dutch because people consume it in Dutch. And we have very specific words like mortgage interest discount that you cannot easily translate. So the strings are in Dutch. The variable names are in Dutch because why would you translate such
Starting point is 00:31:19 a specific Dutch text word if columns are in Dutch? So this whole code base in Dutch or Chinese or Hindi, these things already exist now, it's just then the keywords that are forced in English, but there are already many repositories of programming that aren't known in English. The third answer to multi-language programming is a technical one, translation. We do this. You can make a program in Arabic and I can look at the program in Dutch.
Starting point is 00:31:48 As long as it's like a working parsing program, pretty printing a program into another language, I can parse in all languages. So even if you would want to look at it, you can look at a translated version where we translate all the keywords and we even have a little API to Google Translate where we translate the strings and we translate the variable names for you and we do it in a smart way so that the same variable has the same name everywhere. The curious thing to Felina is that the English speaking programmers always say the same thing. What if someone speaks Arabic and then I speak Dutch?
Starting point is 00:32:26 How does it work? But no one says I could solve this. Whereas there's so many other things again, like again, like making a programming language only with white space that people are like, this sounds like a fun challenge. Why does everyone, I haven't ever encountered only one person of English speaking backgrounds that has said, oh, that's interesting. Let me program that for you. Everyone's like, oh no, this cannot be done. Hands in the air. I give up. Like why? This is easy. This is just a parse tree. It's a real
Starting point is 00:32:59 problem to solve. Yeah, it's funny. It's an interesting example, I guess, of a privilege I have that I didn't realize, right? I speak English, I always have. alphabet in my language. That is such a computer privilege. You don't know what a computer privilege is. I know several people from Spanish and Portuguese speaking languages where they have a lot of accents on their letters, like a dash on the E or a dash on an I. People say, I just stopped writing my name the way it's in my passport. I just dropped this accent from my actual name to accommodate computers. My wife, her last name is O'Dwyer. It's O apostrophe D-W-Y-E-R. It breaks everything. We had an argument before because, I mean, in a minor sense, right? We go to a store and they're like, oh, do you have a rewards thing? Yeah. Okay. Look at my name. It should be like, O apostrophe, whatever, and she hits enter.
Starting point is 00:34:05 And then their computer crashes, and they're like, I don't know what to do, right? And so I was telling her, just don't tell people the apostrophe. Just remove that. But it's such a dominant thing to do. Just change the identity of your family given name to accommodate the machine or name like one thing that makes you you that your parents wanted to give you this
Starting point is 00:34:33 name with that accent on it which is just a normal letter then the Western English speaking computer world forces you to change your name to accommodate the machines. Fact that we cannot get computers to do this because we don't care, right? This issue of care, particularly this kind of implicit disregard for non-English speakers that's embedded in programming languages, it led Felina to a different reason that localized programming was taking off. We just did a nationwide study in Botswana in the South of Africa, where all senior high schools participated in an hour of code using Hedy, and then half of the schools programmed in English and half of the schools programmed in Setswana.
Starting point is 00:35:19 And this is a bilingual country because the British used to be there a while ago. So this is not about making it easier, but that way you look at the programs and then the kids that are in the Setswana group, they say, I didn't know programming could exist in my language. I thought English is the language of technology. So if I participate in technology, it has to be in English. It's just so cool to see that programming can be in my own language. And that has nothing to do with easier because they all know English. But just by making English the dominant language, we are also imprinting upon everyone. English is the language of technology
Starting point is 00:35:55 and the only language, whereas it's very valuable. Some people in Puerto Rico, for example, is a part of the US and in an interesting way, legally, everyone there speaks English. But they love using Hanging in Spanish because they just don't really want to speak English. Turns out, in many parts of the world, people speak English just fine. But yet it carries baggage of colonialism or war or a culture they don't like or whatever, right? The French-speaking people of Canada come to mind. But yeah, programming in your native language, it totally avoids that problem. I could sit here forever and never will I reach the conclusion that some people just don't
Starting point is 00:36:36 feel happy using English. My country hasn't been in a war with the English for a very long time, so I don't have angry feelings for English other than angry feelings of annoying because it's such a hard language with all these weird letters that you pronounce in different ways. This is something you could only learn by engaging with people and by shutting the fuck up and listening to what other people say about using your tools, like exactly like the 12 year olds. It's strange if you think about it, how things come full circle, right? Felina began as, you know, somebody working in the programming language space, then shifted to all this teaching stuff. And because these 12 year olds didn't know English well, often came from non-Dutch speaking homes, that brought her back to her roots of programming
Starting point is 00:37:20 languages. She found genuine, unique, solvable problems in her original field, right? Like this whole world of localization that nobody was even thinking about. So she's back in the programming language world, right? Now focused on making things easier for non-English speakers. In theory, right? She could revisit the conferences and communities from her early career, presenting them with new, intriguing challenges that they hadn't thought about. However, there's a problem. The only place where you are allowed to make programming languages easier is in education. This is where you can do this and people will not get really angry.
Starting point is 00:38:00 People maybe get excited even. Oh, you make programming language easier. That's great for the kids. But professional programmers also hand error messages every day. But then you cannot make that easier. That's just not in the resource code because, well, they just have to deal with it, right? You cannot do that work in programming languages proper because we like
Starting point is 00:38:21 programming languages to be hard, right? We like C++, we like Haskell because it's hard. Something that's easy is not real programming, right? Real programming is hard. This is a problem, right, Felina? She has interesting things to say about localization and parsing and then what do you do to convert one to the other and maybe you just store the syntax tree.
Starting point is 00:38:42 I don't know. Interesting stuff, but the PL people, I don't know. Interesting stuff, but the PL people, they don't want to hear it. And if you talk to professional programmers, it's even worse. This is still also a red line that people do not like to be crossed. People get angry with me for building a non-Latin programming and they send me upset emails. They go out to my conference talks and they get angry because they say, for example, well, but now we have one big English speaking community and then if there's different programming languages in different natural languages, then
Starting point is 00:39:16 the community will be split. This is worse. You're making programming worse. I have this one tool where I talk about localization of programming languages and I try to put Arabic numerals in the top 10 most used programming languages, so just print 2 plus 5, but then instead of 2, I do Arabic 2 and instead of 5, I do Hamza, which is like, it looks like a 0 to us, but it's Arabic 5, just the characters.
Starting point is 00:39:43 No keywords, nothing, just numbers. None of the top 10 most used programming languages, even Farsists. 300 million people use Arabic numerals. I had never even heard of those things. I took like five compiler courses when I was an undergrad. No one ever told me about those Arabic numerals. No programming language support this. How can we talk about artificial general intelligence
Starting point is 00:40:09 when all the top programming languages do not even support all numeral systems on this planet? Meanwhile, right at some point, COVID ends, and Felina herself gets to take this multi-language version of her language with training wheels to the classroom and to see students use it and see the payoff. Some of the kids in our school use sometimes Turkish or Arabic because that's their first language. And that's just so cool because usually in Dutch school system, they're not allowed to speak Arabic because it wouldn't be so nice if people can converse in a
Starting point is 00:40:41 language that not everyone understands. I get that. But then now they can do it in their own language. And you see the same amazement as we get from other communities. They're like, man, does this work in Arabic? Like just the fact that we spend attention on that. I'm like, yes, and now I know a little bit of Arabic. So then they're immediately so impressed by these five words that I know because they're used from Dutch people, wise Dutch people, that Arabic is a bit scary, right?
Starting point is 00:41:08 Like other people don't feel comfortable with English, some white Dutch people might not feel comfortable with Arabic because it's a foreign language that doesn't fit here. So they're not used to Dutch white people giving them permission to have that part of their identity in the classroom. Oh, I can do it in Arabic. Oh, I can do it in Turkish.
Starting point is 00:41:29 It's just very, very cool. And it's so rewarding. By this time, other teachers at the school were using Hedy as well. And one who was also a programmer reached out. When we were doing Python and I have 30 kids, 30 12-year-olds, right? I cannot help them if they're in the computer because all of them have a syntax error. They're all like, teacher, teacher, teacher, I'm stuck.
Starting point is 00:41:50 I tend to have to run around. It's like, oh, syntax error, unexpected EOF. Even in these professional programmer, in addition to being a teacher. But it just takes you a minute or two to figure out what the mistake is because they do this stupid thing, right? They put a quotation mark where semicolon goes or whatever.
Starting point is 00:42:09 It's tiny, but it's not the same. So he says it always felt like a marathon and running around all the time. And then once he switched to Hedy, the errors became full explanations and they were in Dutch. Oh, print with a D is not a key word. Did you mean print with a T? The kid is still say, I'm stuck because they don't read, right? When the teacher goes over, they read the error message and they can say, maybe you should read the error message because I think it explains the problem. This takes 10 seconds and then they go to the next kid.
Starting point is 00:42:41 So he says just that it feels more manageable. It feels less like an energy drain to do programming courses because we put the kids now in a reasonable system where we can expect some independent work. Whereas if you put a 12 year old, especially a non-English speaking 12 year old in Python, you cannot expect them to do independent work. They will need hand holding all the time because the errors are syntax error, unexpected EOF. Not even an adult English speaker would even understand. It's not even English, right? So that I think was such a great feedback. Also in the terms of perspectives, that really made
Starting point is 00:43:21 me think, kids are not my customers. Teachers are my customers. And teachers are scared of programming exactly because of this. Because you have 30 kids, and they think they don't know what to do. They will all need my attention, which is also true. This is one thing Flina has found over and over again. People teaching Python, which really it's fairly low syntax,
Starting point is 00:43:43 but they're just worn out trying to help a class full of kids overcome syntax errors. I once got an email from a guy in Pakistan, also saying that with Hedy, he said, I have levels of engagement that I have never seen before. And it's not even magic, right? I don't think we do something special to make kids excited. It's just, we don't drive them away. That's the magic. We don't think we do something special to make kids excited. It's just we don't drive them away. That's the magic. We don't put hard syntax concepts and terrible error messages in their face, and then they just don't drop out.
Starting point is 00:44:12 That's the magic. We come back to something we said an hour and a half ago, where you said, is your goal to teach Python? Yes, it used to be the goal. But now some people consume all the levels of heavy in, let's say, Chinese. And then at the end, we say, no, you're good to go to Python, right? Training wheels are off. OK, but then I have to do it in English instead of Chinese.
Starting point is 00:44:34 So last year, I wrote this whole paper about here's 12 aspects of your programming language that you can localize. And if you want to do it, this is how. But also culturally, I hope with all the work I'm doing, giving talks about this, that people like you maybe now warm up to the fact that, hey, maybe programming languages could be in non-English. And that at one point, language communities, either the people that are in there now are convinced by my arguments, or after a while, the people that are in there now are convinced by my arguments, or after a while,
Starting point is 00:45:09 the people that are in there now are sort of replaced by newer people that grew up with Hedy or Scratch, which is also a localized language, even though it's Ploppes. And they're like, hey, like my 12-year-old, like, hey, Python, why doesn't this work in Chinese? And that those two things then lead to a world in which this is more possible. I think with the number of students using Hedy, and also just with the vast number of non-English speakers out there, it's quite likely that someone is going to spearhead a multilingual programming future. Maybe they'll take Hedy and they'll start using it outside of its learning environment. They'll start using the language to build real things. And with Felina's story, you know, it began with burnout and her feeling like she
Starting point is 00:45:50 wasn't making a difference with her research, but now she's making a huge difference. Like, I still don't know if I want to stay in academia, which my grad students find hilarious because, oh, you're a full professor. So, you know, you made it. Yes. But I think a lot of what I'm doing is, is, is no thanks to academia. It's just, this is why academia is trying me from stopping the things I want, right? I now maintain a ginormous open source project. We have, I don't know, a hundred pull requests a week. It's just very, very big.
Starting point is 00:46:22 So many translators, so many teachers, right? We run a help desk for teachers if they want to ask questions. None of that is traditionally rewarded because the thing that is rewarded is doing science and doing science is writing paper. It's not like maintaining an open source project is the work of a professor. I mean, it feels like there's this idea that maybe you're not saying that there was something you expected research to be or something you expected your career to be, like, I don't know, impact, I guess. Definitely. That's definitely part of it. Like some people
Starting point is 00:46:55 just like research because they like the activity of doing research. Well, all power to them. This is great. But for me, researching something is because I want to change the world. I want to invent something that didn't exist before. I want to understand something I didn't understand before so I can help other people also understand it. I have written papers that no one ever cited, so maybe no one ever read the paper. Whereas with teaching is indeed not just that kids are excited that you're there, it's also that I have kids come in very often they're girls very often they're kids from low socioeconomic backgrounds where they do not have the computer like I had when I was their age and the first week you're like why is computer
Starting point is 00:47:35 science mandatory how many weeks is this semester how long 14 weeks oh this is long some of them are like that right this is just how they are. It never changes. Fine. But some of them, after a few weeks, they're like, this isn't so bad, which is a great compliment. And then a few weeks later, they're just like, okay, so teacher, do you think my grades are good enough to actually pick this topic next block? I think so. So then we have a few students where if I wasn't there or if our program wasn't there,
Starting point is 00:48:07 probably they would never see themselves as a computer science-y person. Girls, specifically minority girls, as I said, girls from computerless families, they don't see themselves as computer people. So if it's optional, they won't choose it. But if I make them look, then some of them are like, I like this. And then I know it's a tiny change, but at least it's a change that you can also observe with your own eye. Like even if there's two or three of those kids, then there's just for me a reason to get out of bed. And that's definitely what I needed. So this being needed and having impact, Felina found it. And to her, the reason it all worked out is really clear. As I said earlier, when people said we need someone to
Starting point is 00:48:52 teach this program in this school, I didn't think, which is not always good that I do many things without thinking. It's not always great. But then this was just, I didn't't think do I have time how will this work practically what will I not do anymore at the university so I can do this I just felt that it was the right thing to do I think most people really know what they want like when I was built the first Hattie prototype this was a Christmas break as I said I just thought I need to build this on just these next two weeks that are supposed to be time off. I want to work on this because I feel I need to build this thing. And I know then I disappointed a few people with things I also committed to, but I just felt like this is what I need to do because this is a great idea. I will not have so
Starting point is 00:49:42 many great ideas, maybe, so I need to pursue this. There's always reasons, like expectation from society or friends or parents that they tell themselves, no, I shouldn't stay in this job because reasons. Most people actually really, really know what they like. People really know what they want. So if you just listen to that, probably that's the best thing you can do. But who am I to advise, right? That was the show. Thank you, Felina. From the bustling classrooms of Rotterdam to Puerto Rico and Botswana and Pakistan. It's crazy how her language is spreading and, you know, revolutionizing education for various students and educators all
Starting point is 00:50:31 over the place, right? It now supports 54 different native languages. Felina continues to develop it and, you know, needs more support and funding. For more details, visit the episode page where you'll find some links or find Hedy at H-E-D-Y-C-O-D-E.com. That's Hedyco.com. And besides that, to me, Felina's story is a testament to the power of instincts, right? That you can know what you need to do at a level that's more emotional than maybe like conscious thought. You know, she wanted to make a difference in the field she loved and she just leaned in to whatever felt like she was doing that. She just chased that and it ended up having such a large impact. If you enjoyed this podcast, you know, consider subscribing to my
Starting point is 00:51:26 newsletter. I write as well, so you can enjoy some of that and also let you know when new episodes coming out. Also, I'd love to hear your thoughts on this episode. You can tweet at me at Adam Gordon Bell. You can email me. I love getting feedback. Like seriously, somebody saying something nice can make my day. And for true fans, right? The best thing you can do to support me to keep the episodes coming is go to co-recursive.com slash supporters. You find a link in the show notes, become a supporter. Supporters, you know, get to have access to bonus episodes and they get to join the community. And until next time, thank you so much for listening.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.