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 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. 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 charlotte legs to him: "I don't think my boy will ever work at Google, man."
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. 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. That 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. 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 really had a lot of fun doing my PhD. So I thought this was really fun. So I will 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 I'm not really great at playing by the rules of the system. And then with
without me really having the words, 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 then at one point I somewhat realized I don't think I can do this anymore.
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? 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. Like, 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. 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 knew 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 I, now, if I look back at it, I sort of, I'm, I'm hovering in the ceiling, right? Looking at this scene, just without any plan. I didn't think does this fit my schedule? I didn't think what will my department head think if I do this? I
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. 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.
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 7th graders, and her plan is to use a university-level 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 read...
I 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 programming. So maybe they're confused, but at least there's some lesson in buying. Whereas a 12 year old, you really have to lure them in saying, well,
This 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 realized 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 I
The difference I think between an 18 year old and a 12 year old is an 18 year old 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? No.
Not if it made sense to me at all, right? It's hurtful, but it is also very 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. But it was more like I want to understand why. Because these were all work really functioning 12 year olds, right? They could read, they could do math, they've been 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. 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, 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 the 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
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, 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 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.
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. 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. You can repeat it. You can immediately ask questions also. Oh, Felina.
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 knitting means, you cannot even explain why is it confusing. 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 will just go down and I can speak Dutch to you for a few weeks every day. Still, you don't remember anything. You haven't learned grammar or vocabulary, nothing. And this is how so much of programming education. And I think the reason that it hasn't entirely spectacularly failed is
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 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 know how to teach French. Yes, yes. And I think this is also traditionally been sort of in defense from professors in computer science. They're like, well, so all 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, 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 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? What even is a file? Let alone like what is print and what
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, "Jin tengs ae hor," 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 that 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 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 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? You 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. 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
And if you are a speaker of language, then you're also a creator. Because I can make a word 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
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. 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 to reform? Why does it have to be exactly this mold? That's so limiting for expressive power. 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 is awful. And immediately he goes like, no, but then everything would break and 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 odd 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. 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 it wasn't, 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, like it's a bit of an odd time for your boss. So ultimately they did give me tenure, but it was very 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...
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 threat, 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? 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 they are not so excited anymore. Maybe you can offer me a promotion and would that be on the table? He says, maybe this is on the table. Come have a chat. So I got a job offer there.
So, Felina has this new job, partially because of this education research that was caused by her 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 2020, that winter, in a few weeks, I think I will just make a small prototype.
Just like three steps with syntax, just very simple so that I can try it with my next generation of students.
and just see what happened. 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 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 he 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 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 line. That's for elementary school kids. I want to do a textual language.
that a Python is a bit too much. So the question was also, can I sell this to kids as a real language? So Flina spends her Christmas break working away on this language, and she's getting caught up in this excitement that is the early days of a new project. And I really remember also then, in 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 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 ample time, not going to conferences, not doing anything. And feedback was streaming in, even after a
in the first year, so that's from beginning of 2020 to the end of 2020, already a hundred thousand 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. 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 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 play with me. So annoying. I want to come home and I want to think of programming. Then I said, well, I leave you for you. Do you know how my life 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 honey. 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 because then I'm also working and I'm too going to work on Hattie all the fucking time.
So Hedy 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 that we were still doing it online. So the lessons were online. 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 a 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."
"Waps", right? Dutch kids, Dutch people are supposed to be really good at English and Dutch is like English, "Brijt is brijnt". 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 already the same. But the kids said, "We want a program in Dutch." Now Heidi's website had always provided instructions in Dutch with error messages in both English and Dutch. We would say, "Brijnt hallo wereld" .
Only the keywords were in English. So from that perspective, it's like all of these things are Dutch, only that small little words isn't in Dutch. Why?
because this is how I learned. It'd be 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 can do this. How
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. 'Brient' is 'brient' in Dutch, but in Spanish it's 'imprimeer', in French it's 'affiche', in German it's 'drukken'. 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 started to add non-Latin languages like Hindi and Bengali were two of the first non-Latin languages. 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 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. 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 don't 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. 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 neural system is something that we had to implement that I didn't know about. Rotation marks is another one, right? We have single or double quotes in English, but in French, some people 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, 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 UI 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. 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. 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 a specific Dutch text word if commands 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 are 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. As long as it's like a working parsing program, pretty printing a program into another language, I can parse in all languages.
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?
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 problem to solve. Yeah, it's funny. It's an interesting example.
I guess of like a privilege I have that I didn't realize, right? I speak English, I always have, but like... Yes. Yes. And this is also a privilege I didn't realize because I don't speak English, but I have a Latin 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 who
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 up my name. It should be like, oh, apostrophe, whatever, and she hits enter. 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 an...
a dominant thing to do. Just change the identity of like 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 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
The 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.
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 we 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 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 Hattie and they love using Hattie 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 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 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. 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
to make that easier. That's just not in the research scope because, well, they just have to deal with it, right? You cannot do that work in programming languages proper because we like 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. 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 language. 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 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 zero to us, but it's Arabic 5. Just the characters. No keywords, nothing, just numbers. None of the top 10 most used programming languages, even Farsis.
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 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 language that not everyone understands.
I get that. But then now they can do it in their own language and this, 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 scruffy.
scary, right? 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.
It's 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 then if they're in the computer because all of them have a syntax error. They're all like teacher, teacher, teacher, I'm stuck. I tend to have to run around. It's like all 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. 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 I 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. 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 and expected 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 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, 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 put hard syntax concepts and terrible error messages in their face, and then they just don't drop out. That's the magic.
We come back to something we said, I don't know, 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. Okay, but then I have to do it in English instead of Chinese. So
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 sort of replaced by newer people that grew up with Hedy or Scratch, which is also a localized language, even though it's plot-based. 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 near 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
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 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 no thanks to academia. It's just, despite academia 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. 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 is the word. Definitely. That's definitely part of it. Like some people 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 we're 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 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 you have a few students where if I wasn't there or if our program wasn't there, 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 that leads is 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 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 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 building 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 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 revolutionizing education for various students and educators all over the place. It now supports 54 different native languages. Felina continues to develop it and 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, right?
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, consider subscribing to my 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.