[HN Gopher] Show HN: PyKidos, Teach Your Kid Python in the Browser
___________________________________________________________________
Show HN: PyKidos, Teach Your Kid Python in the Browser
Author : rossant
Score : 75 points
Date : 2024-03-14 14:45 UTC (8 hours ago)
(HTM) web link (pykidos.github.io)
(TXT) w3m dump (pykidos.github.io)
| rossant wrote:
| Hi HN! I'm pleased to present PyKidos [1], a quick-and-dirty web
| application I built in a few days to teach my 8-year-old kid
| basic programming concepts using Python.
|
| I tried several existing apps but couldn't find one that met all
| my criteria:
|
| - Fully browser-based, no need to install anything
|
| - Supports Python
|
| - Open-source and customizable
|
| - Simple UI/UX
|
| - Includes simple graphical elements like a grid (my kid thought
| my plain IPython terminal was too "boring")
|
| So I just built my own.
|
| PyKidos provides a playground where you can introduce various
| programming and math concepts to your child, such as:
|
| - Variables
|
| - Basic mathematical operations
|
| - Loops
|
| - Conditional statements
|
| - Modular arithmetic
|
| - Vectors
|
| - Functions
|
| - Coordinate systems
|
| - Color systems
|
| - Trigonometric functions
|
| - Matrices
|
| - And more.
|
| Features:
|
| - Completely client-side: data is stored only in your browser
| (localStorage).
|
| - Utilizes Pyodide [2], a CPython port to WebAssembly, with
| support for NumPy and other scientific libraries.
|
| - Includes a Unicode emoji picker and color picker.
|
| - Allows manipulation of a grid (cell colors and text, including
| Unicode emojis) using Python.
|
| - Reacts to click and keyboard events within the grid.
|
| - Supports animations.
|
| - Enables local download of your Python scripts.
|
| - Facilitates code sharing through a URL containing the entire
| code and data.
|
| PyKidos is still quite rough around the edges since I primarily
| built it for my own needs, but I hope it proves helpful to
| others. In particular, I didn't take the time to ensure it runs
| smoothly on mobile devices, different browsers, or operating
| systems.
|
| Feel free to report issues, ask questions, offer suggestions, or
| submit pull requests.
|
| [1] https://pykidos.github.io/
|
| [2] https://pyodide.org/en/stable/
| partitioned wrote:
| Thank you for doing this
| jtwaleson wrote:
| Looks nice! Will try it with my kids later :)
|
| If you're interested in teaching kids Python, also take a look at
| Hedy. It's a gradual language that exposed more programming
| paradigms with each level. It's used a lot in classroom settings.
|
| Full disclosure: I've contributed a couple of commits.
| sitkack wrote:
| https://www.hedycode.com/ is spearheaded by the wonderful
| https://github.com/Felienne you might know her from her
| spreadsheet related research.
|
| She gave a wonderful talk at Splash 2023 on Hedy, I'll see if I
| can find it. *edit, I don't think it was recorded but I found
| these two which will do
|
| Hedy: Creating a Programming Language for EveryoneFelienne
| Hermans * YOW! 2023 https://www.youtube.com/watch?v=j4eSjA6btE8
|
| "Hedy: A Gradual programming language" by Felienne Hermans
| (Strange Loop 2022) https://www.youtube.com/watch?v=fmF7HpU_-9k
| rossant wrote:
| Very nice! I'll have a look. Thank you.
|
| As a French, language is an additional barrier and I
| implemented some facilities in PyKidos to allow for
| translations of built-in global variables and functions
| (color names etc). But the Python keywords are still in
| English. Happy to see that Hedy supports full localization.
| sram1337 wrote:
| 'Kiddo' has two d's
| antod wrote:
| True, but this way it seems like an exotic Greek island.
| dgacmu wrote:
| If you want some curricular additions to this, you might try
| CMU's CS academy: https://academy.cs.cmu.edu/parents
|
| You have to request a 'mentor' account (or if they're
| homeschooled you can request a teacher account). The CS1
| curriculum is aimed a little older - high school students - but,
| from experience, a bright elementary school student can start it,
| though it may drag a little (the starting lessons are designed to
| be quick for older students).
| lemonlym wrote:
| Additionally, Stanford's Code in Place has open accessed all of
| their python materials https://codeinplace.stanford.edu
| deepthaw wrote:
| Firefox blocks this domain. So I overrode it. Then my employer's
| network blocked it. :(
| inanutshellus wrote:
| Same. Firefox says it's got a bad cert, and employer detects it
| as a malware site. Wonder why. Certainly it doesn't block all
| of github.io... why this guy's site?
| SushiHippie wrote:
| Maybe it got flagged as a "game".
| inanutshellus wrote:
| Ah, in tiny gray font it says the reason is "Newly Seen
| Domains". :P
| TylerE wrote:
| The cert is also less than a week from expiring. Which I
| mean, isn't expired actually but I can see some algo
| seeing that as a signal of low trustworthiness.
| antod wrote:
| Firefox on Ubuntu isn't showing any warnings or errors for
| me.
| waldrews wrote:
| Nicely done, but I suspect the 'wall of code' the kids see when
| first opening the page is intimidating. Maybe start with a
| smaller example?
| dr_kiszonka wrote:
| I agree. I think the project is super cool, but either the
| author overestimates children's abilities and attention or the
| content targets older kids.
| rossant wrote:
| This application is aimed at parents who want to teach
| programming to their children. The tutorial is for the parents,
| not for the kids :) I can't envision children using this
| application independently without adult supervision. Designing
| an app for children would necessitate much more careful
| consideration. I'll make sure to clarify this on the website.
| marginalia_nu wrote:
| Give the kids some credit.
|
| There's a generation of us that got started with QBASIC at 8
| years old, which did significantly less hand-holding than
| this.
| kawogi wrote:
| Our kids at school are using https://cscircles.cemc.uwaterloo.ca/
| for an introduction to Python and it seems they're making good
| progress (age 11 to 14)
|
| It's available in German (and maybe other languages), too.
| dflock wrote:
| GitHub here: https://github.com/pykidos/pykidos.github.io
| Jomus wrote:
| Hell yes. We need more of this. It's been kind of difficult to
| teach my little brother programming, libraries like turtle or
| websites up right now haven't really clicked. we need more
| children oriented projects like this, thank you
| mattigames wrote:
| I will never have children but shouldn't you guys that do have
| some (or will have) teaching your kids how to write prompts so
| the computer can create such code for them? Isn't that the goal
| of AI and all that? To automate things further so people don't
| have to learn to code and so for? To "empower" them to automate
| things that couldn't be automated before? And maybe eventually
| even skip python (or any other programming language) as
| intermediate step and go straight from AI to bytecode.
| throwaway71271 wrote:
| I can tell you as a dad, it frightens me that the future is
| coming so fast I cant even see 1 year ahead.
|
| I teach my daughter things from small circuits to assembler, c,
| python, sql but also basic prompt engineering, how next word
| predictors work, how surveillance works or how privacy is
| infringed, how do we pay for the "free" apps, or how to make an
| idea into something real, also things about how to type fast
| (at the moment she types with 80wpm) and how to not be afraid
| of computers and how to just play with them.
|
| Of course, it might turn out that I have wasted her time, but
| we spend time together, and during this time I also teach her
| how to learn things.
|
| Honestly I am not sure "what" you are teaching is that
| important, If I knew how to bake, I would teach her the deep
| mastery of baking with all my heart.
|
| PS: you can check my teaching progress log here
| https://github.com/jackdoe/programming-for-kids/blob/master/...
| pbhjpbhj wrote:
| It's good to know how to specify what you want to a chef, but
| also good to know how to make dishes for yourself.
| israrkhan wrote:
| It gets stuck (browser tab becomes unresponsive) when i try to
| run the default program on main screen.
|
| Using chrome
| rossant wrote:
| Yes, there was a localization-related bug, sorry about that.
| Should be fixed now.
| duderific wrote:
| Really cool! Seems like the arrow keys don't work as expected? Or
| maybe I'm missing something. I was excited to change the apple to
| pear or strawberry on the Tutorial page, but it didn't seem to
| work.
| RandomUser4976 wrote:
| Amazing job! This is really useful. I like that you didn't hide
| code and start them with a real example. Great job!
| harikb wrote:
| I have used adventofcode with my kids, but beyond day 5 or 10 is
| very hard to explain. I wish there was a simpler version of
| adventofcode targeted towards kids.
| theogravity wrote:
| This is really cool. I've found that learning the language is a
| small part of a larger battle.
|
| My new year's resolution has been to learn Python (I'm a JS /
| nodeJS dev), and have been studying on and off the past few
| months.
|
| Biggest hurdle for me has been:
|
| - Understanding venvs. Why can't it just be like how node works?
| I get you need the venv so you don't use some wrong python
| version or install stuff into system python global space
|
| - Package management (still struggling with this - for example,
| downgrading packages seems to be a huge pain compared to node)
|
| - General ecosystem. If I want to trend towards AI / ML, do I
| need to learn pandas first, then get into jupyter notebooks, etc?
| Fortunately my work has an education stipend and I've bought lots
| of books, online courses (datacamp, realpython, manning books),
| etc, but I haven't found anything that felt "structured" in terms
| of just getting enough to know to hit the ground running in a
| productive way. I'm constantly re-arranging my internal course
| plan.
|
| - Version sensitivity. I'm used to semver conventions from JS,
| and python and its package ecosystem doesn't seem to practice
| this at all. It's really strange from my perspective that one
| package / project only works with python 3.7 but not 3.6 for
| example, or when a popular package is still stuck on a 0.x.y
| version
___________________________________________________________________
(page generated 2024-03-14 23:01 UTC)