Skip to content(if available)orjump to list(if available)

Hedy: Textual programming made easy

Hedy: Textual programming made easy

93 comments

·January 27, 2025

sitkack

I saw Felienne Hermans give a talk on Hedy at Splash! but that wasn't recorded sadly, but here is a presentation too a much larger audience https://www.youtube.com/watch?v=j4eSjA6btE8 that I hope covers the same material.

It is a wonderfully amazing project. I don't know if the video goes into it yet, but when you see how truly egalitarian the project is, you are both proud and ashamed of humanity. Proud that Felienne made this project and all the lives she is improving, but ashmed that it took us this long. Lets make up for it by making everything we design with the same affordances. Lets democratize access to the future.

You might recognize Felienne from her research on Spreadsheets which I feel was a thing here around 2010 https://www.youtube.com/watch?v=0CKru5d4GPk It feels like that was the start of resurgence in respect for Spreadsheets.

zfnmxt

Aren't all the SIGPLAN conferences recorded now? At any rate, her talks were recorded:

https://www.youtube.com/watch?v=IrUh5AgIYKE

https://youtu.be/-Br66SUjsdQ?t=12103

(I was also at SPLASH24 and thought she gave great talks. :) )

hitekker

I wonder how much projects like Hedy appeals to adults over kids.

Egalitarian, multilingual coding sells well to parents. Children, so I hear, just want to make Minecraft mods or Roblox games.

Seems like a tension between the customer and the user.

sitkack

In the video I saw, and of course it is by the Hedy team, about Hedy, but it showed kids very much being excited that the keywords were in their language. There are a lot of kids in the world and meeting them where they are is important.

keyle

I grew up French. Never had any issue remembering English keywords. It's not like "for" really flows naturally as an indication of a looping construct.

Edit: I sounded overall negative about this, but I didn't meant to be. I really like the tutorial, and the `ask` and `echo` constructs. I will show it to my son.

rom1v

I'm French too, and when I was young, I learnt the Basic language before learning English (by reading Basic programs already available on our computer).

So I was able to write FOR … THEN … ELSE blocks without even knowing what the keywords meant (I just know what they did to the program). One day, I explained to my father what I was writing, and I read out loud FOR … "TEN" … "ELCE" (with a strong French accent), and he corrected me by pronouncing the words correctly ("FOR … THEN … ELSE"). I was shocked: "how do you know?" (he knew nothing about Basic or even programming).

I learnt that day that "for", "then" and "else" were not just keywords in the Basic language, but they were actually real words in English.

rom1v

Precision: Of course, I meant "FOR" and "IF THEN ELSE" separately (the way I wrote it might wrongly suggest there is something like for-then-else).

swiftcoder

Still, it's nice to engage with folks on their own terms, and not just blindly assume they'll want to work in English all their life.

I kind of miss the early 2000's, where a bunch of pretty well-known French and Belgian academics were publishing source code in their own languages (#define to remap keywords and all)

boxed

A programmer not working in English is kinda useless imo. EVERYTHING is written in English source code. If you don't know English you are going to have a very bad time.

I am a native Swedish speaker and I have had a hard policy since I was a teenager to have all electronics set to English and not Swedish. Why? Because the translations are lossy at best. Often you need to understand both English and Swedish AND have a creative mind for word games to understand what the hell something means.

Example: My daughter had an Android smart watch. One menu option in settings was "omkring". This makes no sense. But if you translate it to English it can become "around" hmm, still nonsense.. oh, but it can mean "about" as in "around and about".

Translation is a fools game. It builds Babels Tower all over again. It's bad enough that we have multiple programming languages that only sometimes interop.

swiftcoder

> EVERYTHING is written in English source code

That's not some immutable law of the universe - it's really a pretty recent state of affairs. A quarter century at most

trinix912

I've a few things to say about this. First is that the translations have to be good. As you've said, Android fails at it, sometimes spectacularly (think "free space" = "liberty space" etc) and so do many other apps that apparently use Google Translate or pay some random guy on the Internet to translate it for them. You can have good translations, but it means hiring an actual (professional) translation team.

As for the ambiguous terminology, this is where the quality of your translation team really shows. When Windows was first translated to Slovene, for example, the team took special care to find the correct terminology (sometimes inventing phrases along the way) and use it consistently. Again, not something machine translations or some random guy for $5/hr on Fiverr would do.

The second is that this all depends on where you're from and what's your goal when using a computer. If you're doing it to become a programmer, then yes, there's no way around English. But for classroom use, I'd argue a localized approach is much better because it directly exposes the "tone" of programming to the students even if they don't intend on ever doing it again in their life. Otherwise they're just learning "FOR x IN...DO..." to pass an exam and not really thinking what it actually means. Again, here I have the "non-coder" kids in mind. You also have to keep in mind that the further you go from Germanic languages, the weaker the similarities to your language become.

keybored

> I am a native Swedish speaker and I have had a hard policy since I was a teenager to have all electronics set to English and not Swedish. Why?

The base reason is that Scandinavian teenagers can learn English by sheer osmosis from Anglo culture. (That is not the case in many other places.) Then it makes perfect sense to:

> Because the translations are lossy at best.

Since (my reason at least) is that I can troubleshoot problems using the English Internet corpus. And I don’t need to bother with multiple terms.

Granted I was older before I committed to this practice.

keyle

Nice, I was unaware of this. Take OCaml for example, it was primarily developed by the French if I recall

    OCaml was written in 1996 by Xavier Leroy, Jérôme Vouillon, Damien Doligez, and Didier Rémy at INRIA in France
Yeah, but they didn't write keywords in French, they went straight to `let`, `rec`, `if`, `then`, `else`... Because they're just keywords, they could just be punctuations; so as long as you don't go full brainfck.

Athas

The comments were quite often in French, however! Until relatively recently, the OCaml compiler would also sometimes emit error messages in French in some obscure cases.

Yoric

I'm sure there is, somewhere in the deep recesses of the Internet, a camlp4 or camlp5 syntax extension to replace `let`, `rec`, `if`, `then`, `else` with `soit`, `réc`, `si`, `alors`, `sinon` :)

wink

There's a difference where you use this.

Learning language - fine, use whatever language you want

Excel - spreadsheet logic breaking when you open it with a different locale - horrible

danielvaughn

I’m a native English speaker, but I have several dev friends from Latin America.

I remember asking them whether it would be useful if they could use Spanish words in their syntax, and they all pretty much said the same as you.

poulpy123

For the anecdote, my first introduction to programming (and to computers in general) was in french schools with Thomson TO7, and the language used was Logo, with french keywords. But I agree, english keyword are not really the difficult point when learning to program (for countries with latin alphabet)

anentropic

I'm opposite: I thought the multi-lingual aspect seemed nice but the echo command immediately bothered me

ragebol

Hedy is great for learning programming to kids.

I tried this a while ago with my scout group, I expected them to take a while per lesson, but they flew through the lessons in no time, drawing all sorts of patterns and making little games

sitkack

That is one of the coolest results from Hedy, that these engaging learning paths have a constant acceleration to them, so before you know it, you are juggling while riding a unicycle. You undertand something to the core when you have built it yourself.

In a way it is a perfect (ugh) example of constructivist learning theory, Hedy itself is a constructivist learning exercise in how to teach.

Lego Mindstorms were inspired by Seymour Papert, himself the creator of the Logo programming language and whom he took inspiration from Piaget the psychologist whose work on feedback loops creating core knowledge.

This is an example of how to search using phind https://www.phind.com/search?cache=pti09n13qtsxahmn5zra8yjk

EdiX

This isn't really new, there have been projects like this since forever. Microsoft used to ship one with Office, even. I wish they had published something about why they stopped doing it, maybe that would prevent people from repeating the same mistakes. I was subjected to one of those translated programming languages 20+ years ago: they are traps two weeks in you realize you can't do anything without either learning a different programming language (with english keywords) and reaching for external libraries that will define english identifiers and often even have english documentation. I wish I could get back every minute I spent with it and could reinvest it into learning english.

monsieurbanana

I don't know the one that shipped from Microsoft, but I'm going to assume it's goal wasn't to teach people how to code but rather empower non-programmers to code. Starting from that, I don't see the two would be similar.

chris_pie

Also Excel functions are translated based on your region. Which I find annoying, because most learning resources and references are in English, and English function names don't work in other regional settings.

canucker2016

I have no idea how this got through management.

The localizers went too far, converting the language keywords to somewhat appropriate language-specific versions.

I guess once they shipped a version with the keywords translated, they decided to was too expensive to fix/go back and limped along with this major footgun.

zanellato19

I know several programmers who don't speak any english and can understand the things well enough.

I think this is a valid project and while most programmers I know eventually understand a bit of what the identifier of english mean, the concepts are much better explained in their native language. They can much better translate it later when moving to a "serious" programming language or even to Excel or something like that.

Excel functions are also translated, so stuff like that is really helpful even if you aren't going to become a programmer.

librasteve

here’s some raku lang in welsh… https://github.com/finanalyst/rakuast-L10N-CY

  fy $choice;
  fy $continue;
  fy @bad = <damn stupid nutcase>;
  ailadrodd {
    $choice = prydlon "Type something, like a number, or a string: ";
    dywedyd "You typed in 「" ~ ($choice ~~ unrhyw(@bad) ?? "*" x $choice.golosg !! $choice) ~ "」";
    a-roddwyd $choice {
        pryd "dragon" {
            dywedyd "which is 'draig' in Welsh"
        }
        pryd unrhyw(@bad) {
            dywedyd "wash your mouth with soap"
        }
        pryd IntStr {
            dywedyd "which evaluates to an integer ", $choice
        }
        pryd RatStr {
            dywedyd "which evaluates to a rational number ", $choice
        }
        rhagosodedig {
            dywedyd "which does not evaluate to a number "
        }
    }
    $continue = prydlon "Try again? If not type N: "
  } hyd $continue eq unrhyw(<N n>)

gorkish

And for OG Perl, Damian Conway gives us classical Latin!

  use Lingua::Romana::Perligata;
  
  adnota Illud Cribrum Eratothenis
  
  maximum tum val inquementum tum biguttam tum stadium egresso scribe.
  da meo maximo vestibulo perlegementum.
  
  maximum comementum tum novumversum egresso scribe.
  meis listis conscribementa II tum maximum da.
  dum damentum nexto listis decapitamentum fac
    sic
      lista sic hoc tum nextum recidementum cis vannementa listis da.
      dictum sic deinde cis tum biguttam tum stadium tum cum nextum
      comementum tum novumversum scribe egresso.
    cis

broken-kebab

Software development has its lexicon derived from English. Not learning it does exactly zero favor to kids. On the contrary: their time is wasted, they will need to learn it anyway, and it's sad that some well-intentioned people make them skip what cannot be skipped.

And the mistake seems to be repeated every 5-7 years. One can gather a whole cemetery of such initiatives, the earliest dating back to 70s I believe

rix0r

You are evaluating this as a tool that is intended to train people up to being professional software developers.

It's not!

It's instead intended to give every child in the world, regardless of inclination, some first-hand experience in programming computers. Some of these may go on to become professional software engineers, and if they do it will be time enough to become proficient in the common lexicon. Even if they don't, at least they've gotten a better understanding of these machines that inescapably pervade our lives. And kids that wouldn't have thought they'd have an interest in programming get an easy-entry exposure and may decide to pursue it professionally after all.

Given that that's the audience, the goal is to take away any barrier to the essential skill to learn, which in this case is writing instructions for an unthinking machine.

Kids that already know they love programming and are/were willing to do whatever it takes to learn it (i.e., probably nearly everyone on this forum, including myself), are not the audience! Those kids will make it one way or another. Hedy is for all the other kids out there.

jrm4

This is an excellent point and goal.

I've always thought that one of the better things we could do is to make programming not specialized; e.g. Excel-as-a-programming-language has arguably done more to bring programming to the masses than any other "real" language, and perhaps THAT's the goal.

broken-kebab

I'm sorry, but you are building on a false premise. If you goal is to lure children unmotivated to learn programming you'd better be distributing sweets. Or (if you ask a Far Eastern, or Eastern European mom) threaten those brats with punishments. Replacing "for" for "voor" is not even a barrier removal as much as you seem to believe. Because "for" in programming has a separate meaning, and you'll spent the same amount of time explaining how it works whether it "for", or "voor". Except that programming-for can be useful for farther studies, and programming-voor is much less so. I answered here in a longer comment if you are interested:

https://news.ycombinator.com/item?id=42840778

lolinder

> it's sad that some well-intentioned people make them skip what cannot be skipped.

I don't see this as a move to skip learning English terms for programming concepts, it's a move to reorder.

Starting with Python requires kids to start learning computational thinking simultaneous with learning the English terms for computational constructs. Sure, there aren't many terms to learn, and sure, in some cases (but far from all!) the English word isn't a great mnemonic even for English-speaking children, but neither one of those facts is a good explanation for why teaching a few foreign-language words isn't just accidental complexity in the early stages! And if it's accidental complexity, why not put it off for later?

The whole premise of Hedy is to gradually add complexity in levels, and yeah, that means that throughout the design (not just in the localization) there are some aspects of each level that become redundant as you move on to later levels. But if that's what you're criticizing, you're not criticizing just the fact that it's localized, you're criticizing the entire pedagogical philosophy of Hedy and of most educational institutions.

Educators in general prioritize breaking a concept down into manageable chunks, even if that means teaching some things in a way that isn't perfectly applicable in the real world. Hedy does that for programming, and if you don't like it then your beef is with the entire educational philosophy, not the localization.

Chris2048

> simultaneous with learning the English terms for computational constructs

Very often these are the terms for those things. Much like things named after their inventors, or discoverers; novel concepts often borrow the word of origin of its inception. What would you call "Currying" in another language?

So I guess you could rename keyboard, with <key>-<boards> with words for each coming from your native language, but you'd still be following the convention of 'form' - that the buttons are "keys" (which in other languages may not have the same meaning where a 'key' I believe is piano terminology derived from French "clé"), and its container is a "board".

Unless your language has a handy word that is a perfect fit for the concept of "keyboard", it seems like unnecessary work for the sake of it. Even English borrows 'loan'-words, and Japanese even has a separate alphabet for them.

> neither one of those facts is a good explanation for why teaching a few foreign-language words isn't just accidental complexity in the early stages

b/c you aren't really teaching a foreign word b/c the words still need further context in English, and that is a good reason IMHO, even if you disagree. You could teach ASM mnemonics ('mov', 'div', 'cdq'..) which are also derived from English terms, and I doubt it'd be much different given how abstract the relationship to the words is, and how unusual the terms (e.g. "execute" an action isn't that common in English, outside of CS, or perhaps the military).

> gradually add complexity in levels ... you're criticizing the entire pedagogical philosophy of Hedy and of most educational institutions.

> Educators in general prioritize breaking a concept down into manageable chunks ... if you don't like it then your beef is with the entire educational philosophy

It isn't clear to me that 'English" terms are a layer of complexity on top of local terms. I'd say you are teaching jargon either way, neither of which is clearly easier to learn - I could just as well argue that using native words could cloud the issue and create misunderstandings if they don't match the programmatic meaning well.

ejplatzer

Have you looked at the content of the lessons? We're not talking about Currying and modular arithmetic. We're talking about "print", "ask", "is", "forward", "turn", "random". None of these are jargony, and the Hedy examples are carefully curated and designed to hide the mismatch between where these terms come from and the extent of their meaning in programming.

The point of Hedy is not to localize programming, the point is to break down the process of learning the absolute fundamentals of programming into bite-sized, completely simple chunks that students can explore, mess around with, build silly and cool things, without having to worry about the minutiae and quirks of real computers. That's why they introduce an "ask" statement that assigns a temporary, invisible variable that can only be used by immediately putting an echo statement afterwards - because they're building up to variable assignment, but they want to show the concept of input first.

jtwaleson

Hedy is designed for use in classrooms, and reaches many kids who otherwise would not have tried programming at all. See it as a stepping stone towards programming rather than a great language.

Disclaimer: I've been involved with the project (in a tiny way), and am a fan.

broken-kebab

I see what you mean, and I don't enjoy criticizing the initiative, but I volunteered as a programming teacher for several years, and my experience makes me believe you are on the wrong track completely. English has never been the major obstacle to teaching programming.

1. English is taught widely, and they need it anyway.

2. The lexicon to master is pretty short.

3. Kids naturally learn words. Say, with moderate interest in K-pop a European teen can remember Korean names, sometimes even in Korean script.

4. "For" in programming is not the same word as "for" in natural language. You may be under illusion that when it's in a local language, it will be easier to digest, but it's not. You need to explain its separate meaning anyway. And when you did it not in Programming English - sorry, you simply missed the opportunity. You spent roughly the same amount of time to create a redundant word-slot in student's memory.

5. "Tried" is not a valid metrics for success here. One could as well offer free cookies, and number of tries would be growing. But that elephant in the room will look at us without approval!

jtwaleson

I agree that localization might not be the biggest hurdle, but that's also not the biggest selling point of the language. It's a gradual language (the syntax grows which each level), it's fun, and designed for classrooms so teachers can help kids easily. I disagree with you, because I think the localization does more good than bad. It's not like these kids are becoming "career hedy programmers". There are only a couple of levels, after which they will hopefully continue to learn other languages. I'm happy to agree to disagree.

hitekker

> 5. "Tried" is not a valid metrics for success here.

A key insight. Feels like the usual human confusion over activity and output. Activity metrics bias for participation / attention at the top end of the funnel, whereas Output metrics assess the end: the quality & quantity of production. The first is visible, immediate, plays to human bias, whereas the second is much farther off and usually less interesting to the general public.

Applied to kid coding, adults like seeing many kids doing work socially, whereas the few kids who stick with it aim for genuine, even selfish, creation.

It's not a bad initiative, just one that seems to cater mostly to the ideals of the teachers and the parents.

null

[deleted]

tucnak

Have you lived under a rock for how many years?

AI

The best learning tool, "stepping stone" for kids. And they're already familiar with it when cheating on their homework.

jtwaleson

"Please don't post shallow dismissals, especially of other people's work. A good critical comment teaches us something."

phtrivier

I don't know about the US, for the first serious second languages courses in France happen sometimes at the very late primary school, or early secondary school.

But you might want to teach very simple programming concepts before that. You end up using programming as "applied math" and "applied reading / writing".

It's okay. Not all of them will learn programming. Just like it might be usefull to call some angles A in math class, before we learn enough greek to call them omega like all Physical Engineers.

And if they get serious, yes, they will learn english.

(Now that I think of it, I'm pretty old, and I grew up during the "Computer Science for all" years, so I had some very early english and some very early LOGO classes taught the same year. And I'm pretty sure the LOGO went first. Ooooh, memories.)

fryd_w

Agree with most of that. yet, I think there is a lot of value in intuitively understanding the 'fors' and the 'ifs' in a way that's different than a combination letters.

Always reminding yourself that 'if' means 'jezeli' (or paste if in your lang) before writing is an extra cognitive load, quite annoying for a kid in the age of dopamine disruption.

Is that problem huge? Don't think so.

incrudible

Moreover, in the age of LLMs every child can have an infinitely patient assistant explain them how to do things in any mainstream language. Even before LLMs, the ability to Google something was proportional to the popularity of the language. When we teach children math, we do not teach obscure boutique notation, we teach what everyone knows, even though there are alternatives that would certainly work better for teaching.

suddenlybananas

>When we teach children math, we do not teach obscure boutique notation

Actually, you do. There's a reason you teach kids multiplication by aligning blocks into groups and things like that, rather than jumping straight into rote algorithms.

JTyQZSnP3cQGa8B

It seems good for beginners. Less scary than BASIC, simpler than Python, and they even have a turtle mode. I don’t know who the audience is but I would have enjoyed that as a kid.

voidUpdate

I really like that it can be used in different languages. Does the whole file have to be in one language, or can you change whenever? Can you have some lines of arabic inside an english file?

sitkack

You can select the language drop down and follow one of the tutorials

https://www.hedy.org/hedy#story

https://www.hedy.org/hedy/10?language=ar&keyword_language=ar...

At the top left is a control panel that toggles base language for the language keywords. Or what it appears to me. Is that what you are looking for? You could try the exercise and see if it supports both.

It looks like you can definitely program entirely in Arabic with English inside of Hedy, I am not sure if any of the exercises are declaring new keywords

voidUpdate

Ah, thank you, that answers my questions =) Looks good!

chaosprint

Love the mission!

My project Glicol (https://glicol.org/) also has some classroom practice for sound 101

But I think what children need most is to provide very simple to complex examples for modification.

The bigger worry is that other things, like Instagram, become more appealing than learning to code.

tijl

I tried Heddy with my children. It worked great at first. It's really easy to get started with. Every level, the language changes slightly to introduce more concepts. That worked great for my younger son, but it confused his brother. Code that was correct in one level, suddenly gives errors in the next. In the end, we stopped using Hedy. I now teach them Python instead. It's harder at first, but at leastthe things they learn, won't change.

BSTRhino

My project Easel (https://easel.games/about) is also trying to be a good first programming language for teenagers!

So many projects try to innovate teaching programming by lowering the barriers, but not enough effort trying to increase the fun, so that is what I'm trying to do