
Kidsruby - Learn Ruby for kids - illdave
http://kidsruby.com/
======
ddagradi
[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.

~~~
deadprogram
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.

~~~
ddagradi
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.

------
ZanderEarth32
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.

------
nyellin
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?

~~~
ddagradi
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.

~~~
jnbiche
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.

~~~
ddagradi
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!

