CoRecursive: Coding Stories - Story: From Burnout to Breakthrough
Episode Date: June 4, 2024Can 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)
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.
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.
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.
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 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.
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.
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 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?
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.
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 seventh 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 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,
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
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 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.
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.
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 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,
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.
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.
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.
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.
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
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 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.
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 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,
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
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?
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 if you're a speaker of language,
then you're also a creator.
Because I can make words.
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.
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.
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.
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.
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,
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?
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?
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,
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
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
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,
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
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 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.
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
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
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.
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
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
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.
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.
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.
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.
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
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 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.
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 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.
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?
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 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.
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
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.
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
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
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 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
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, 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
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.
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
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 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?
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.
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.
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.
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.
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
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 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 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.
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,
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
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.
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
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
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,
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
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
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
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
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.