Hacker News new | past | comments | ask | show | jobs | submit login
Kidsruby - Learn Ruby for kids (kidsruby.com)
93 points by illdave on Dec 26, 2011 | hide | past | favorite | 22 comments



[Full disclosure: I have contributed to Hackety Hack! (http://hackety-hack.com/) in the past, an analogous product.]

I wish Kidsruby didn't feel like a really poorly directed effort. That website is about as unfriendly as it could be. For example:

I'm a new programmer - where do I get started? Does the app teach me? Does the website teach me? Can anyone help me if I have questions? How do I "make games" or "hack my homework"?

I'd bet kids don't care about the news, the Twitter feed, or how many Likes this has on Facebook, so why is that the first thing they see? (And why is it included on most pages? Is there no more useful information to add?) How do I even get to the "about" page besides a poorly named link on the homepage?

--

These are probably issues that can be solved by a designer and some careful thought, but I think it takes more than a cartoon header to be "kid friendly". Obviously the website isn't the core product, but with so few examples and lessons, I feel like it needs to offer more direction, guidance and instruction. Not everyone learns best in a sandbox.


Thanks for your feedback. Have you installed 1.0 and played with it yet? We've tried to address the first time user a bit better.

If you have specific instructional material you think should be added, we would be delighted to receive a pull request.

Thanks again for the feedback, we do appreciate it.


Just did an install. A 260MB download is just silly. And it's not even the application, it's an installer. Once it's done dropping copies of qt, Ruby and git somewhere on my system I can finally get started. Please, please make a better package than that.

First launch gets better. Friendly "Start Here" button that explains the interface. And then it links to Hackety Hack, which is awesome, because _why's lessons are awesome. Could the code examples be formatted any worse though? All white text on a black background, with white borders and an incorrect line height? Yuck. (It's much better in the non-_why lessons, where code is formatted pre-tag style, but still not colored.).

Including RubyWarrior and Gosu is a fantastic idea. Great packages!

But then there's inconsistencies. The glossary defines 3 terms, and then fails to define 7 more. The app seems confused, telling me all of the following: "This is KidsRuby" "This is Hackety Hack" "This is Ruby4Kids"

The tabs differentiating between "Output" and "Turtle" are an interesting concept. I'm of a mixed opinion there, but I see what you're getting at. I'd probably have argued against that as one tab or the other is potentially useless at all times.

Really, I have the same criticism to level at this as Hackety Hack (and I imagine that is no small coincidence): it's a good idea wrapped in a terrible experience. It's not that it needs to be dumbed down for children, but it does need stronger guidance. It fails by giving too many opportunities for alienation and/or working just badly enough that users will get frustrated and give up. The fact that it doesn't behave like a native app makes it that much harder to apply existing knowledge.


Feedback for the MacOS version:

- It asks for admin privileges with no explanation.

- Then it spends a loooong time installing, again with no explanation of what it's doing or how long it will take.

- It's installing things I already have (ruby and git) and I don't know if it is clobbering them.

- It adds a folder to the Applications menu with one useful entry (KidsRuby.app) and a bunch of internal files. There is something called kidsirb.sh which opens Xcode.

- There is barely any learning material inside the app. I don't see how I would actually learn the language from this. Sure, if I'm resourceful I could probably find that material elsewhere, but then what is the point of using this over vanilla IRB? Not a lot.


For reference, here are the instructions for installing github on Windows. The audience here can very possibly be doing their first school programming assignment with git.

http://help.github.com/win-set-up-git/

Your site should try to provide a very linear guide for new users.


Unfortunately, I couldn't even get the darn thing to run. I am fairly familiar with Ruby, but the entire process from figuring out what to download and then trying to get it to install, and then trying to launch it was just too rough. Had to uninstall it. I'll try again in the future if it fixes some issues. Nice idea though.


Is Ruby really better than Python for kids? I find Python to be more consistent and less surprising than Ruby, although that sometimes comes at the expense of expressiveness.

For that matter, has anyone researched the (dis)advantages of teaching statically typed languages?


I'm going to go out on a limb here and say that it really doesn't matter which language you chose, and that the fact that you find python less surprising is most likely because that's the language you know best out of the two?


it really doesn't matter which language you chose

KidsHaskell FTW!


As an absolute first programming language it probably wouldn't be that bad with good instruction.

Trying to teach them KidsHaskell after they've become comfortable with KidsRuby on the other hand would probably be a bit more difficult.


Well, my first language was LOGO. I don't think that disadvantaged me when I started C. I think it's all about the approach (add in the fact that in school our teachers gave out chocolate for whoever got their program finished first).


I also think Python is a great teaching language, but I think it brings some confusing concepts to the table. Whitespace nesting is one of my favorite things in the world, but is a bit of a demanding idea to add for someone with no experience in code.

It remains unimportant, however, as the goal is to teach children foundational skills, not specific languages.


I would argue that whitespace provides a visual cue to code organization that could prove critical to children learning to program. To provide an (adult) example of what a little whitespace and DRY can bring about, I'll describe my struggles to learn to program fluently. From 1998 until 2010, I did web design on and off, even working as a professional web designer for a few years. Although I was good at HTML, CSS, and design, I came from a non-CS background and struggled to learn Javascript beyond simple cutting and pasting of scripts and a little jquery. I eventually learned enough PHP to begin considering myself a programmer (yes, cue the laughter), but it wasn't until I started to learn Python a few years ago that I experienced a breakthrough.

Now I'm fluent in Python. After I was comfortable with Python, I went back to Javascript, via Coffeescript initially, and with the background Python provided, was able to grasp the fundamentals of Javascript to the point where I can now actually create full programs in JS. Since then, I've been able to pick up some C and am making excellent progress with Haskell. I attribute this programming epiphany to Python, and particularly to the visual cues that whitespace provides (along with "explicit is better than implicit"). Whitespace not only provides key visual cues to code structure, it also forces you to organize your code coherently before you can run it.

I've not learned Ruby, but I like what I've seen of it a lot. I'd love to have the opportunity to use it one day. However, I firmly believe that for some people at least -- including children learning to program -- semantic whitespace provides critical visual and organizational pedagogical support. For that reason, I think that Python, or even Coffeescript, would be a better first language for child (and adult) learners.


I've definitely gone back and forth with that, and felt the exact same way when I learned Python. And I agree - semantic whitespace is a really great feature that makes Python simpler in a lot of ways.

Where I start to like it less is when I think about how much structure it imposes on the code before you can even write a line - it has the potential to remove some degree of experimentation. And how easy, for a new user, it could be to get it just wrong enough to be problematic.

Don't count me as a hater though. I would love to write Ruby with semantic whitespace - HAML already gets me halfway there!


The language makes a difference. I've seen many try to pick up programming and stop because they deem their first language too hard.

I agree, however, that foundational skills matter a lot. That's why statically typed languages might be better for learning to program, because they lay a foundation for understanding types.


I recall Pascal and C when I was starting out and how tough it was to grasp them. But I also had trouble with Perl when I first encountered it. I got quite a bit done with some languages based on basic and with Delphi, when I could finally understand some of the errors I used to get with Pascal.

Based on my experience, I'd say that errors you get help you with learning about languages that make those errors evident. I learned about recursion before I learned about getting the compilers happy, for instance.

It's funny though that I can count Python as one of the languages that I've barely used and learned simply because I was never too fond of it.

Anyways. I think Ruby is a fine language as it resembles basic and doesn't demand ";" and parentheses, and it also has great OO support which helps with the documentation and even IDE support. With name completion, for example. Methods in Ruby are very straightforward and control-flow structures are plenty capable in Ruby. Not having to declare variables can also help, and Ruby does report some errors quite handily.

Cheers.


Not trying to argue, just curious: what about Ruby you find surprising?


Off the top of my head (there is more):

* Floats are printed without rounding

* You can write x = foo unless foo but not x = foo if ! foo


Floats are printed without rounding

Isn't that a good thing? I like knowing the real value I'm passing around. It does round...eventually (at 14 decimal places or so).

You can write x = foo unless foo but not x = foo if ! foo

This is incorrect.


I could have sworn I tried that a week ago and it didn't work. Thanks for the correction.


  bash-3.2$ python
  Python 2.7.1 (r271:86832, Jun 16 2011, 16:59:05) 
  >>> 1.2 - 1.1
  0.09999999999999987


    >>> print(1.2 - 1.1)
    0.1




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: